Пригласить на свой discord сервер
Бот обладает обширной библиотекой функций, связанных с игрой Heroes of the Storm;
Также присутствует несколько функций для discord-комьюнити, написанных специально под ряд серверов;
При необходимости можно добавлять или удалять отдельные модули из cogs не затрагивая остальной функционал
- Установить зависимости (желательно в venv)
pip install -r requirements.txt
- Подготовить БД создав нужные таблицы через скрипт sql.init;
Скрипт написан под PostgreSQL, корректность для других БД не проверялась
-
Зарегистрировать бота на сайте Discord Developers
- Для работы потребуется APPLICATION ID и TOKEN
- Настройку Bot Permissions и Privileged Gateway Intents расписывать не буду, они зависят от нужных модулей
-
Подготовить для себя config:
- Поставить нужный префикс
- Поставить нужных админов
- Выбрать цвета сообщений
- Установить переменные среды APP_ID и TOKEN или напрямую вставить значения в bot.py
TOKEN = os.environ.get('TOKEN')
APP_ID = os.environ.get('APP_ID')
- Запустить файл bot.py
- Записать переменные в файл .env в корневой папке
TOKEN=123456
APP_ID=12345
YT_API=12345
- Запустить
docker run --env-file=.env fenrir1121/samuro-bot
- heroes - Модуль выдает основую информацию по всем героям
- hots - Все команды связанные с хотсом, помимо информации о героях
Основые модули из-за которых бот изначально писался. Требуют минимум доп библиотек.
- profile - Связка профилей в дискорде с батлнете. Основа для следующих модулей
- event - Проведение событий
- team - Объединения людей в команды/кланы
- achievement - Присвоение и вывод достижений
- stats - Вывод статистики по людям, событиям, достижениям
- fix - Фиксы различных данных в таблицах. Требовался при пересмотре логики некоторых функций. Код некоторых функций может не работать, т.к они писались для разового использования.
Данный раздел требует для работы отдельную Базу данных.
- news - Создание новостей и рассписания для сообщенства RU | Heroes of the Storm
- ruhots - Доп функции для RUHotS: лайки и вывод Артов от художников
Модули отделены от основной кодовой базы, содержат много хардкода и специфичных моментов. Возможно когда-нибудь я вернусь к этим функциям, в их текущем состоянии рекомендую их к удалению.
- help - Хелп по командам, выводит справку по каждому отдельному модулю
- CommandErrorHandler - Обработчик особых ситуаций. Вынесен отдельно т.к используется много своих обработок исключений
- owner - Ряд технических команд доступных только создателю бота (в данный момент не доработан)
- general - Базовые команды: проверка жив ли бот, приглашение бота, информация о боте
- slash - Создание команд с подсказками через слеш
Слеш команды обладают несколькими особенностями. Именно из-за них во многих местах используется получение guild_id и author_id, т.к эти атрибуты именуются не так, как в стандартной библиотеке дискорда. Обычно для слеша команды пишут отдельно, но я ленив и старался писать так, чтобы они работали сразу и там и там.
- Константы - Различные пути к файлам и используемые в коде константы
- Исключения - Дополнительные исключения
- Проверки - Различные проверки для разграничения доступа к функциям
- Скрипты - Частично не нужные или даже не работающие скрипты с тестами различных функций
Обновление осуществляется в полуавтоматическом режиме, поскольку обновление файлов в репозитории heroesdata осуществляется с задержкой.
Перед обновлением проверить, что мейнтейнер выложил новые файлы под текущий патч.
- Обновить в config номер текущего патча
- Запустить download_gamestrings
flowchart TD
A --> |Бот запущен| Z{Успех}
A{Запуск bot.py} --> |Ошибка| B{Модуль с ошибкой нужен?}
B --> |Нет| C{Удаляй} --> A
B --> |Да| D{Читай ошибку\nразбирайся}
- Разгрести папку utils/hots
- Или дополнить ее и вынести туда функции из других модулей
- Или объединить файлы перенести в utils/library
- Протестировать sqlalchemy
- Добавить тесты кода
- Добавить исключения в сомнительных местах
- Добавить больше комментариев
- Переписать create_heroes_ru_data и все встреонные функции
- Попробовать собрать docker образ
This project is licensed under the Apache License 2.0 - see the LICENSE.md file for details