Обработчики команд
Тут ты научишься создавать обработчики команд!
Для создания обработчика тебе понадобится объект cmd который можно получить из объекта модуля
cmd - декоратор.
Параметры:
commands(str|List[str]) - команда(-ы) на которые нужно реагировать.
Пример
Module/__init__.py
from utils import *
async def main(app: Client, mod: Module):
cmd = mod.cmd
@cmd(['cmd', 'my_command'])
async def _cmd(_, msg: M):
pass
warning
Используйте ТОЛЬКО mod.cmd для регистрации команд! Настоятельно не рекомендуется использовать свои варианты обработчиков!
warning
Функции команд (и прочих обработчиков) должны быть уникальны
подсказка
Называй функции обработчиков начиная с _. Например, _my_command или _hello
Отлов ошибок
При использовании mod.cmd ошибки автоматически будут выводится в консоль.
Пример вывода
18-11-2024 21:31:41 RimTUB [0] ERROR: Error in command test (module TestModule):
Traceback (most recent call last):
File "/plugins/TestModule/__init__.py", line 10, in
raise ModuleError('test error')
ModuleError: test error
Однако, если Вы хотите чтобы ошибки отображались пользователю, следует обрабатывать их вручную:
Module/__init__.py
from utils import *
from traceback import format_exc
async def main(app: Client, mod: Module):
cmd = mod.cmd
@cmd('test')
async def _test(_, msg: M):
try:
raise ModuleError('test error')
except:
# выводим трейсбек в консоль
mod.logger.error('Упс! Ошибочка!', exc_info=True)
# выводим его-же пользователю, загрузив на pastes.dev
await msg.edit(f"Ошибка! {await paste(format_exc())}")