PaiGram/plugins
2022-07-17 12:08:09 +08:00
..
abyss.py 重构插件传入 service 方式 2022-07-07 09:36:34 +08:00
admin.py 重构插件传入 service 方式 2022-07-07 09:36:34 +08:00
artifact_rate.py 重构插件传入 service 方式 2022-07-07 09:36:34 +08:00
auth.py 更新 Auth 模块的权限逻辑 2022-07-17 12:08:09 +08:00
base.py 重构插件传入 service 方式 2022-07-07 09:36:34 +08:00
cookies.py 重构插件传入 service 方式 2022-07-07 09:36:34 +08:00
daily_note.py 修改 DailyNote 函数 2022-07-07 10:11:06 +08:00
errorhandler.py 删除多余 f-string 2022-07-08 10:48:55 +08:00
gacha.py 修复 gacha 特殊情况下默认无输出的问题 2022-07-13 21:31:36 +08:00
help.py 重构插件传入 service 方式 2022-07-07 09:36:34 +08:00
inline.py Remove unused imports 2022-06-18 02:34:12 +08:00
ledger.py 重构插件传入 service 方式 2022-07-07 09:36:34 +08:00
post.py 重构插件传入 service 方式 2022-07-07 09:36:34 +08:00
quiz.py 重构插件传入 service 方式 2022-07-07 09:36:34 +08:00
README.md 更新 pluginsjobs 文档 2022-07-11 16:56:46 +08:00
sign.py 重构插件传入 service 方式 2022-07-07 09:36:34 +08:00
start.py 重构插件传入 service 方式 2022-07-07 09:36:34 +08:00
strategy.py 重构插件传入 service 方式 2022-07-07 09:36:34 +08:00
uid.py 重构插件传入 service 方式 2022-07-07 09:36:34 +08:00
weapon.py 修改 Weaponservice 传入方式 2022-07-07 13:30:02 +08:00
wiki.py 重构插件传入 service 方式 2022-07-07 09:36:34 +08:00

plugins 目录

说明

该目录仅限处理交互层和业务层数据交换的任务

如有任何新业务接口,请转到 service 目录添加

如有任何API请求接口请转到 model 目录添加

基础代码

from telegram import Update

from manager import listener_plugins_class
from plugins.base import BasePlugins, restricts
from plugins.errorhandler import conversation_error_handler
from utils.base import PaimonContext

@listener_plugins_class()
class Example(BasePlugins):

    @classmethod
    def create_handlers(cls):
        example = cls()
        return [CommandHandler('example', example.command_start)]

    @conversation_error_handler
    @restricts()
    async def command_start(self, update: Update, context: PaimonContext) -> None:
        await message.reply_text("Example")

注意

plugins 模块下的类需要继承 BasePlugins

plugins 模块下的类必须提供 create_handlers 类方法作为构建相应处理程序给 handle.py

在函数注册为命令处理过程(如 CommandHandler )需要添加 conversation_error_handler 修饰器作为错误统一处理

必要的函数必须捕获异常后通知用户或者直接抛出异常

入口函数必须使用 @restricts() 修饰器 防止洪水攻击

我也不知道从那个版本开始 plugins 文件夹下的全部模块无需再次修改 handler 文件实现注册处理程序

只需在构建的类前加上 @listener_plugins_class() 修饰器即可

注意:@restricts() 修饰器带参,必须带括号,否则会出现调用错误

如果 service 需要全局共用,可以参考 daily_note.py 代码