Загрузка документации...

🌙 Xioca

Структура модуля

Каждый модуль должен быть классом, унаследованным от loader.Module и заканчиваться на Mod.

@loader.module(author="sh1tn3t", version=1)
class ExampleMod(loader.Module):
    """Описание модуля"""
    # Код модуля

Примечание: Параметр author и version - опциональны.

Инициализация модуля

Для инициализации модуля используйте метод on_load:

async def on_load(self, app: Client):
    """Вызывается при загрузке модуля"""
    logging.info(f"Модуль {self.name} загружен")

Создание команд

Команды создаются как методы класса с суффиксом _cmd:

async def example_cmd(self, app: Client, message: types.Message, args: str):
    """Описание команды. Использование: example [аргументы]"""
    await utils.answer(message, "Пример команды" + (f"\nАргументы: {args}" if args else ""))

Примечание: Аргумент args содержит текст после команды и является необязательным.

Фильтры для команд

Вы можете добавлять фильтры к командам с помощью декоратора @loader.on:

@loader.on(lambda _, __, m: "тест" in getattr(m, "text", ""))
async def example2_cmd(self, app: Client, message: types.Message):
    """Команда сработает только если в тексте есть 'тест'"""
    return await utils.answer(message, "Команда с фильтром")

Обработчики сообщений

Для обработки сообщений используйте методы с суффиксом _message_handler и декоратор @loader.on_bot:

@loader.on_bot(lambda self, app, message: message.text and message.text.lower() == "ты дурак?")
async def example_message_handler(self, app: Client, message: Message):
    """Ответит на 'ты дурак?'"""
    return await message.reply("Сам такой!")

Инлайн-команды

Более подробные параметры можно найти в документации Aiogram 3 или utils.py

async def example_cmd(self, app: Client, message: types.Message):
    """Пример запроса инлайн-команды от лица юзербота."""
    await utils.inline(self, message, "команда для инлайн запроса")

Обработчики inline-запросов

Для обработки inline запросов используйте методы с суффиксом _inline_handler:

@loader.on_bot(lambda self, app, inline_query: True)
async def example_inline_handler(self, app, inline_query, args):
    """Обработка inline запросов. Пример инлайн-команды. Использование: @bot example [аргументы]"""
    await utils.answer_inline(inline_query, "Текст который отправится через inline")

Обработчики callback-запросов

Для обработки нажатий на кнопки используйте методы с суффиксом _callback_handler:

@loader.on_bot(lambda self, app, call: call.data == "example_callback")
async def example_callback_handler(self, app: Client, call: CallbackQuery):
    """Обработка нажатия на кнопку"""
    return await call.answer("Пример callback", show_alert=True)

Watchers (наблюдатели)

Watchers - функции, которые выполняются при получении новых сообщений:

@loader.on(lambda _, __, m: m and m.text == "Привет, это проверка вотчера")
async def watcher(self, app: Client, message: types.Message):
    return await message.reply("Привет, все работает отлично")

async def watcher_(self, app: Client, message: types.Message):
    if message.text == "Другой текст":
        return await message.reply("Другой ответ")

Важно: Название функции должно начинаться с watcher. Можно добавлять несколько watchers.

Важные замечания