Перейти к основному содержимому
Версия: 2.2.2-1

Обработчики команд

Тут ты научишься создавать обработчики команд!

Для создания обработчика тебе понадобится объект 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())}")