Skip to content

MarcT1me/GuardBot

Repository files navigation

logo GuardBot - discord bot

@GuardBot#5373 | @GuardBot-dev#7721

img.png

Список изменений

  1. изменение скрипта on_voice_state_update - добавление кулдауна
  2. изменение в пре-процессинге include
  3. исправления (/clear_queue) + рефакторинг VoiceCog
  4. добавление Grok нейросети по упоминанию бота в сообщении

фиксы

  • исправления некорректной загрузки скриптов (импорт скриптов из скриптов мог вызывать ошибку на Linux)

Воможные ошибки

  • "протухание" аудио потоков и резкое переключение на следующий трек (абсолютный рандом)

Описание

img.png
Это частный дискорд бот поддерживающий скриптинг и имеющий базу данных, написанную на Tortoise-ORM.
На данный момент: база данных - SQLite, версия Python - 3.12, версия Discord API - 2.5.* Большая часть взаимодействий будет реализована через Discord API 2.0, начиная простыми app_commands, привязанными к профилю бота на сервере и заканчивая тотальным переносом всего на discoed.ui, что должно улучшить работу с ботом

Функционал и планы

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

Script Engine (IN PROGRESS)

Скрипты позволяют легко настроить поведение бота как для всех серверов, так и для определённого сервера, позволяя полностью сменить логику или создать свою.\

В данный момент идёт работа над: увеличением безопасности скриптов для сервера и возможности создавать скрипты привязанные к определённому серверу.\

  1. скрипты событий;
  2. библиотеки и вызываемые скрипты;
  3. система выполнения скриптов из discord;
  4. база данных;
  5. guild_only скрипты;
  6. абстрагирование скриптов от основной программы;
  7. отделение зоны видимости скриптов от программы;
  8. улучшение безопасности использования Discord API в скриптах;

Voice commands (PARTIAL FINISHED)

Это простые команды голосовых каналов, позволяющие создать динамический, временный канал, позвать туда бота и попросить проиграть какое-то видео с YouTube.\

В данный момент идёт работа над: настройками создания временных каналов как для админа (добавление нового или его удаление), так и для пользователя, создающего его (например настраиваемое имя канала).\

  • Для воспроизведения аудио: (FINISHED)
    1. основные, для работы с каналами;
    2. простое воспроизведение аудио;
    3. очередь воспроизведений; (HAS ERRORS)
  • Для оперирования каналами: (PARTIAL FINISHED)
    1. фабрики каналов и временные каналы;
    2. данные пользователя, фабричных и временных каналов;
    3. настройки каналов и пользователей; (STARTED)

Тут нечего говорить - администрирование сервера это управление каналами, участниками имеющими туда доступ и ролями, дающими пользователям взаимодействовать с этими каналами. Помимо этого бот сможет позволить легко создавать оповещения в разные каналы и настраивать стандартные оповещения (по типу создания нового временного канала или входа пользователя на сервер).\

В данный момент идёт работа над: простейшими командами для управления разными объектами и участниками, помимо этого ведётся работа над созданием мини API для создания скриптов, что позволит как улучшить стандартные команды, так и создать guild_only скрипты.

  • Команды: (STARTED)
    1. управления каналами; (STARTED)
    2. управления ролями;
    3. управления участниками; (STARTED)
    4. API для добавления кастомных команд в guild_only cogs; (STARTED)
  • Функции: (NOT STARTED)
    1. оповещения;
    2. наказания для участников (привязка к правилам);

Социальные активности: (NOT STARTED)

Как по моему мнению - дискорд это самая социально выраженная социальная сеть из всех, начиная от разных каналов(чатов) и серверов(сообществ/каналов), заканчивая делениями на разные социальные статусы, которые тут реализованы ролями. Я хочу помочь администрации и не только ей улучшить автоматизировать все эти аспекты, позволяя создавать оповещения или автоматически выдавать роль в зависимости от ранга пользователя или его достижений на сервере.\

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

  1. уровни;
  2. оповещения;
  3. достижения;
  4. события;

BOTDEV команды

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

/botdev_hub

Запускает меню прямого управления ботом, в большей части связанного с классом бота

img.png

  • bottools прямые приказы боту, связанные с его работой
    img_2.png
    • хотрелоад бота - /restart_bot [time] [interval]
    • остановка работы - /close_bot [time] [interval]
    • хотрелоад cogs - /reload_cogs [cog_list]
  • test_tools команды для тестирования, пока что реализованы только проверки работоспособности отлова ошибок
    img_1.png
    • простая ошибка Exception("TEST ERROR") - /test_drop_exc
    • проверка отлова ошибок HTTP (HTTP 400), - /test_drop_http [force]

/log_hub

Команда для работы с лог-системой

img.png

  • кнопка остановить динамически меняется, в зависимости от текущего статуса логирования - /turn_logging
  • получить логи выдаёт имеющийся список логов - /get_logs
    img.png

/script_hub [is_light]

команда для взаимодействия со скрипт-движком. Делится на 2 - панель разработчика и админа сервера. Первая не поменялась, а вторая немного изменённая его версия.

img.png

  • запустить динамически меняется в зависимости от режима выполнения, сам режим выполнения позволяет выполнять скрипты прямо из сообщения в дискорд - /turn_exec_mode
  • обновить скрипты - обновляет скрипты, перезагружая их либо с базы данных, либо с файлов - /update_scripts [from_db]
  • выполнить скрипт - выполняет скрипт с заданными параметрами - /exec_script [name] [kwargs] [from_db]

img.png

  • просмотр скриптов - позволяет просмотреть скрипты из базы данных исходя из фильтров, для каждого скрипта выдаёт Embed с заголовком и тремя полями - именований, статуса и типа, помимо этого, выдаёт 3 файла, 2 когда (raw & compiled) и ещё один с env, что позволяет сделать необходимые действия.
    img.png
    img.png
  • обновить скрипты - обновляет guild only скрипты
  • выполнить скрипт - работает аналогично кнопке из меню скриптов разработчиков, что тоже помогает в работе со скриптами

Запуск

  • пройдите на портал Discord dev portal
  • зайдите на портал Google Console Cloud
    • создайте новый проект
      • select a project
      • New project (настройте название если хотите)
    • У меня включено, но я не уверен необходимо ли это
      Этот шаг может быть излишним, но в моих планах подключение бота к официальным сервисам + я не до конца разобрался с работой Google Console Cloud, возможно он задействует этот API при работе в OAuth 2.0 Client ID. Так же я не могу вспомнить, настраивается ли это при создании Client ID, UI меняется после создания первого Client ID, либо я опять что-то напутал
      • найдите и включите расширение YouTube Data API v3
      • в меню credentials создайте новый API токен и скопируйте его в .env, как GOOGLE_CONSOLE_CLOUD_YOUTUBE_API_KEY
        • укажите в качестве правила YouTube Data API v3, так токен будет привязан только к этому сервису
    • создайте новый аккаунт Google (на всякий случай)
      • При первом запуске бот подгрузит токен и откроет браузер, а в консоль выведет ссылку для входа, зайдите с этого аккаунта Google и подтвердите вход, если у вас не выходит, попробуйте добавить почту, привязанную к аккаунту в Audience - Test users
    • откройте меню и зайдите в credentials
      • создайте OAuth 2.0 Client ID
        • укажите DesktopApp в качестве типа проекта
        • можете настроить имя
        • скачайте json файл с токен-ом для входа и поместите его в secret/gc_client_secret_token.json, чтобы бот смог его найти
  • клонируйте репозиторий
    • git clone https://github.com/MarcT1me/GuardBot.git
    • зайдите в папку cd GuardBot
  • установите зависимости Python и запустите проект
      pip install -r requiements.txt
      python ./main.py

About

Discord bot for administration and voice

Resources

Stars

Watchers

Forks