maksymov / afi

WarThunder Discord Bot

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

AFI - Discord-бот, который любит WarThunder

Русский | English

0. ОБЩАЯ ИНФОРМАЦИЯ

Если у вас есть сервер Discord, то пригласить бота к себе на сервер можно по следующей ссылке: Бот AFI

Discord-канал тех. поддержки
Собираем на развитие

1. РОЛИ И ПРАВА

После приглашения бота на свой сервер, он автоматически получит следующие права:

  • управление никнеймами (обязательно)
  • чтение сообщений (обязательно)
  • встраивание ссылок (на всякий случай)
  • просмотр истории сообщений (на всякий случай)
  • использование внешних эмодзи (на всякий случай)
  • отправка сообщений (обязательно)
  • прикрепление файлов (на всякий случай)
  • упоминание @everyone (на всякий случай)
  • добавление реакций (на всякий случай)
  • просмотр голосовых каналов (связано со 2-м)

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

Дополнительно в настройках сервера необходимо:

  1. Создать роль с названием "[AFI] Звания и награды"
  2. Перетащить роль AFI на самый верх;

2. ТРЕБОВАНИЯ К НИКАМ

Для того, чтобы AFI нашёл статистику игрока, должно быть выполнено одно из условий:

  1. Псевдоним на сервере Discord включает игровой ник, обрамлённый треугольными скобками. Например, если в игре ник pupkin, то псевдоним в дискорде должен быть <pupkin>, <pupkin> (Василий), [AFI]<pupkin>(Василий) и т.д.
  2. Игрок привязал свой игровой ник к учётной записи Discord командой !ник (мой_игровой_ник).

Без этого не будет отдаваться игровая статистика с ThunderSkill.

3. ЧТО УМЕЕТ AFI

3.1. Вывод статистики

Для просмотра своей игровой статистики с ThunderSkill нужно отправить в любой текстовый канал, куда у бота есть доступ, команду !статка. Если ваш псевдоним соответствуем пункту 2, то AFI получит вашу статистику на ThunderSkill и вернёт её обратно в чат.

статистика игрока

Также можно запросить статистику одного или нескольких участников полкового дискорд-сервера упомянув их после команды !статка, например:

статистика игроков

В статистику включаются Звания и Награды, выданные игрокам в полку.

3.2. Звания и Награды

Если в полку действует система награждений за определённые достижения, AFI поможет вести учёт таких Званий и Наград.

Звание - присваивается игроку бессрочно за определённые достижения. Например, в нашем полку при достижении 100-го уровня игроку присваивается звание 💯 - МАРШАЛ, за суммарный донат в игру свыше 10 000 р присваивается звание 🍩 - ДОНАТ. Звание не является каким либо поощрением, а лишь говорит об определённых качествах и достижениях игрока.

Награда - вручается игрокам за выполнение определённых заданий, при этом значёк награды закрепляется на определённое время перед ником игрока. Например, за 5 фрагов в полковом сражении у нас вручают награду 🐲 - ДРАКОН, за 7 фрагов вручают - САТАНА и 500 голды, а за самый красивый фраг у нас полагается награда 🎨 - ХУДОЖНИК.

Управлять званиями и наградами могут только игроки с ролью "[AFI] Звания и награды".

При вручении награды бот автоматически добавляет значёк к нику игрока. Таким образом у активных игроков ники постоянно содержат знаки отличия и могут выглядеть приблизительно так: 💎☔<As_Ha_Bblcote> Димас | 🐲🔝<hischnic12> Алексей | 💎🐲🎥🔝<WaSe_Q> Василий.

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

Посмотреть список званий и наград полка можно командой !звания и !награды соответственно.

3.2.1. Создание звания

Чтобы добавить новое звание в базу данных полка нужно ввести команду следующего вида:

!добавить-звание-в-базу-данных [значёк] (название) <описание>

Например:

!добавить-звание-в-базу-данных [💯] (МАРШАЛ) <получают игроки с сотым уровнем в игре>

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

3.2.2. Удаление звания

Чтобы удалить новое звание из базы данных полка нужно ввести команду следующего вида:

!удалить-звание-из-базы-данных (название)

3.2.3. Изменить звание

Для изменения звания нужно дать команду:

!изменить-звание [значёк] (название) <описание>

Изменится то звание, которое совпадёт по названию.

3.2.4. Присвоение звания и разжалование

Для присвоения звания нужно отправить в чат сообщение с командой:

!звание+ (название) @игрок1 @игрок2 @игрок3 и т.д.

Например:

Присвоение звания

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

Разжалование в звании выполняется такой же командой, только со знаком -:

!звание- (название) @игрок1 @игрок2 @игрок3 и т.д.

3.2.5. Создание награды

Создание награды будет выполняться командой:

!добавить-награду-в-базу-данных [значёк] (название) <описание> {порядковый номер}

Например:

!добавить-награду-в-базу-данных [☔️] (ПВО) <забрать 3 воздуха с наземки> {4}

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

3.2.6. Удаление награды

Удаление награды из базы данных:

!удалить-награду-из-базы-данных (название)

при удалении награды все записи о её присвоении игрокам также удалятся.

3.2.7. Изменение награды

Для изменения награды нужно дать боту команду:

!изменить-награду [значёк] (название) <описание> {порядковый номер}

Изменится та награда, которая совпадёт по названию.

3.2.8. Вручение и возврат наград

Для вручения награды нужно отправить в чат сообщение с командой:

!награда+ (название) @игрок1 @игрок2 @игрок3 и т.д.

Например:

Присвоение звания

Вручить игроку одну и ту же награду можно бесконечное кол-во раз. Кол-во раз получения игроком награды указывается числом рядом со значком награды в статистике.

Возврат награды выполняется такой же командой, только со знаком -:

!награда- (название) @игрок1 @игрок2 @игрок3 и т.д.

При этом будет удаляться последняя из присвоенных наград.

3.2.9. Рейтинг игроков

Чтобы составить рейтинг игроков по кол-ву полученных наград за определённый период, нужно дать боту команду:

!топ (ГГГГ-ММ-ДД) [ГГГГ-ММ-ДД]

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

Выглядит рейтинг приблизительно так:

Рейтинг игроков

4. УСТАНОВКА БОТА НА СВОЙ СЕРВЕР

Бот работает через discord.py. Общение бота с базой данных происходит при помощи Django.

Сразу оговорюсь, что реализация связки хромает, но это будет поправлено в будущем.

Установка Discord.py:

sudo apt install libffi-dev libnacl-dev python3-dev git
git clone git@github.com:maksymov/afi.git
cd afi/
python3 -m venv .env
source .env/bin/activate
pip3 install -r requirements.txt
python manage.py migrate

После этого добавте файл bot_settings.py в корень проекта

# -*- coding: utf-8 -*-

BOT_TOKEN = 'здесь-вписать-токен-бота'

Переходим в корень проекта и запускаем бота:

python3 discord_bot.py &

Описывать боевую настройку Django здесь не буду.

About

WarThunder Discord Bot


Languages

Language:Python 100.0%