Небольшая предыстория:
Ранее для дискорда альянса использовал Dramiel (https://github.com/shibdib/Dramiel).
В первую очередь необходима была авторизация и репостинг альянсовой почты в дискорд.
Этот бот юзал библиотеку для дискорда, поддержку которой забросили. Пусть оно и работает сейчас, но "что-то может пойти не так".
Ну и в дополнение - не очень красивая авторизация с копированием кода.
Возникло непреодолимое желание написать своего бота с использованием библиотеки для дискорда, которая официально разрабами дискорда "одобрена". Выбор пал на библиотеку discord.py.
Бот назван Broadsword.
На данный момент умеет:
1. Авторизация.
2. Репост альянсовой почты
Это был критичный для меня функционал, потому он реализован в первую очередь.
Бот тестировался под ОС Debian 9. На данный момент запустил у себя в продакшн. База Dramiel без проблем мигрируется на новую структуру.
Подробнее.
Для атворизации используется модифицированный портал, что использовался для Dramiel. Модификация заключается в том, что реализована простая двойная авторизация, без копирования кодов в дискорд. Сначала происходит акторизация в дискорде (автоматом добавляет в дискорд по указанному линку приглашения в конфиге), потом в EVE.
Опциональные возможности:
- периодичная проверка авторизованных на принадлежность к альянсу
- катапультирование с вашего дискорда, если мембер покинул альянс
- установка мемберу в дискоре его ингейм имени персонажа
- установка перед именем мембера тикера корпорации формата "[TICKER] Member Name"
- автоматическое создание группы корпорации и добавление мембера в эту группу
- конечно же, группы исключения (чтобы кого-то никогда не катапультировало с дискорда и/или не отнимало роли)
Репост альянсовой почты работает, на данный момент, через старый xml api сервис. Будет адаптировано для ESI. Репост работает исключительно для одного альянса, прописанного в конфиге с одним API-ключом.
Что я хочу еще реализовать:
- если человек каким-то образом попал в дискорд, но не авторизовался за определенное время или не получил нужную группу исключений, то катапультировать его (опционально - вкл\выкл)
- репостинг нотификаций корпоративных\альянсовых
- заменить сгенерированный swagger client своей небольшой либой для работы с ESI (пока под вопросом)
Кому интересно, линк на гитхаб:
https://github.com/h...erty/Broadsword
Бот писался для нужд своего альянса, но вдруг кому-то окажется полезным.
Полноценного руководства по установке нет.
Если кому-то нужна будет помощь по установке и запуску, то лучше писать мне в дискорд: hiveliberty#2064