Git Product home page Git Product logo

samuro-hotsbot's Introduction

Samuro Bot for Heroes of the Storm

Пригласить на свой discord сервер

Автор

fennr (@fennr)

Дискорд

Описание

preview-gif

Бот обладает обширной библиотекой функций, связанных с игрой 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

Запуск в Docker контейнере

  • Записать переменные в файл .env в корневой папке
TOKEN=123456
APP_ID=12345
YT_API=12345
  • Запустить
docker run --env-file=.env fenrir1121/samuro-bot

COGs

Игровые

  • heroes - Модуль выдает основую информацию по всем героям
  • hots - Все команды связанные с хотсом, помимо информации о героях

Основые модули из-за которых бот изначально писался. Требуют минимум доп библиотек.

Сообщество

  • profile - Связка профилей в дискорде с батлнете. Основа для следующих модулей
  • event - Проведение событий
  • team - Объединения людей в команды/кланы
  • achievement - Присвоение и вывод достижений
  • stats - Вывод статистики по людям, событиям, достижениям
  • fix - Фиксы различных данных в таблицах. Требовался при пересмотре логики некоторых функций. Код некоторых функций может не работать, т.к они писались для разового использования.

Данный раздел требует для работы отдельную Базу данных.

RU | Heroes of the Storm

  • news - Создание новостей и рассписания для сообщенства RU | Heroes of the Storm
  • ruhots - Доп функции для RUHotS: лайки и вывод Артов от художников

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

Технические

  • help - Хелп по командам, выводит справку по каждому отдельному модулю
  • CommandErrorHandler - Обработчик особых ситуаций. Вынесен отдельно т.к используется много своих обработок исключений
  • owner - Ряд технических команд доступных только создателю бота (в данный момент не доработан)
  • general - Базовые команды: проверка жив ли бот, приглашение бота, информация о боте
  • slash - Создание команд с подсказками через слеш

Слеш команды обладают несколькими особенностями. Именно из-за них во многих местах используется получение guild_id и author_id, т.к эти атрибуты именуются не так, как в стандартной библиотеке дискорда. Обычно для слеша команды пишут отдельно, но я ленив и старался писать так, чтобы они работали сразу и там и там.

Прочие файлы для настройки

  • Константы - Различные пути к файлам и используемые в коде константы
  • Исключения - Дополнительные исключения
  • Проверки - Различные проверки для разграничения доступа к функциям
  • Скрипты - Частично не нужные или даже не работающие скрипты с тестами различных функций

Patch Updates

Обновление осуществляется в полуавтоматическом режиме, поскольку обновление файлов в репозитории heroesdata осуществляется с задержкой.

Перед обновлением проверить, что мейнтейнер выложил новые файлы под текущий патч.

Обновление до актуального патча

Алгоритм решения проблем

flowchart TD
A --> |Бот запущен| Z{Успех}
A{Запуск bot.py} --> |Ошибка| B{Модуль с ошибкой нужен?}
B --> |Нет| C{Удаляй} --> A
B --> |Да| D{Читай ошибку\nразбирайся}

To Do 1.x

  • Разгрести папку utils/hots
    • Или дополнить ее и вынести туда функции из других модулей
    • Или объединить файлы перенести в utils/library
  • Протестировать sqlalchemy
  • Добавить тесты кода
  • Добавить исключения в сомнительных местах
  • Добавить больше комментариев
  • Переписать create_heroes_ru_data и все встреонные функции
  • Попробовать собрать docker образ

License

This project is licensed under the Apache License 2.0 - see the LICENSE.md file for details

samuro-hotsbot's People

Contributors

fennr avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.