К содержимому

Расширения

расширения - внешний компонент, расширяющий базовый функционал бота. Если каждая команда это функция бота, то расширение это единица функционала.

Как правило расширения может предоставлять содержать следующие компоненты:

  • Команды. Конкретные /команды бота с параметрами.
  • События. Обработчики событий Discord. А также определение/обработка собственных событий.
  • Настройки. Внешнее хранилище настроек, привязанное к расширению.
  • Базы данных. Определение таблиц для базы данных.
  • Таймеры. Циклические обработчики, выполняемые через время.

Для Шиори, расширения представлены в виде файлов python кода. По умолчанию такие файлы располагаются в директории extensions/.

  • Директорияextensions/
    • music.py
    • coffee.py

Как вы можете видеть, у нас есть расширение музыкального плеера и кофе. И при таком раскладе, нетрудно догадаться что примерно выполняет каждое из расширений.

Отсюда следует и следующее правило: Расширения не должны зависеть друг от друга. Они могут использовать только функционал из ядра или библиотек.

  • Директорияextensions/
    • eco.py Расширение-помощник для запуска экономической системы
    • casino.py Мини-игры, с участием экономики
  • Директорияlibs/
    • eco.py

Как вы можете видеть, есть библиотека, предоставляющая функционал экономики. А также два расширения, которые от него зависят. При томс эти расширения не зависят друг от друга и вы в любой момент сможете исключить casino, если посчитаете что оно вам больше не нужно.

Бывают конечно и более сложные случаи. Давайте вернёмся к примеру с плеером. Предположим что функционал плеера значительно расширился. Теперь там можно управлять воспроизведением, очередью, фильтрами, а ещё реагировать на различные события плеера. В таком случае разбивают одно расширение на группу.

  • Директорияextensions/
    • Директорияmusic/
      • main.py Основной функционал
      • player.py Управление плеером
      • filters.py Добавление фильтров
      • queue.py Управление очередью
      • events.py Обработка событий плеера
  • Директорияlibs/
    • Директорияmusic/ Общие компоненты музыкального расширения

Группа расширения как правило выделяется в собственную директорию. и у такой директории есть главное расширение main. Именно оно отвечает за подключение библиотеки и будет считаться обязательным.

Все остальные - побочные расширения. Их добавлять будет не обязательно. Опять же, они не зависят друг от друга, а лишь дополняют общий функционал.

теперь давайте поговорим откуда можно взять расширения. В первую очередь их можно найти в официальном репозитории chiori. Все представленные в репозитории расширения мы будем называть коллекцией.

В коллекции представлены все (или почти) расширения, которые вы могли видеть в главной сборке Шиори. Вы можете использовать и модифицировать их в своих сборках.