/WikimediaRoleManager

Бот для дискорд-сервера русскоязычных проектов Викимедиа.

Primary LanguagePythonMIT LicenseMIT

Основная информация

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

Задачи, которые решает бот:

  • Верифицировать (подтверждать) участника при входе на сервер.
  • Добавлять участников в тематические каналы при помощи ролей.
  • Получать информацию из Википедии с помощью команд (в разработке).

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

Техническая информация: Бот написан на Python с использованием библиотек PWB и Discord.py.

Код разбит на несколько независимых модулей:

  • file.py (отвечает за работу с файлами).
  • botlike.py (лайкинг рандомной правки).
  • bot.py (основной файл, откуда происходит работа с дискордом).

Проблемы

  • Так как библиотека pywikibot не поддерживает асинхронную работу (корутины), приходится ждать до 3-5 секунд, пока бот поблагодарит правку. Из-за этого может быть некоторая заторможенность в исполнении команд.
  • Чёрный список работает либо на все реакции, либо ни на какие. Поэтому в данный момент нет возможности запретить заходить в конкректный канал.
  • В данный момент добавление/удаление канала(-ов) работает только с одним сообщением.
  • Поддержка работы на двух и более серверах одновременно.

Установка

Для работы с ботом необходим Python версии 3.7+.

Клонируйте данный репозиторий. Установите pywikibot, следуя инструкции на странице установки. Установите библиотеку discord.py с помощью команды pip install discord.py.

Создайте своего бота на официальном сайте дискорда по инструкции. Укажите в файл token.py ваш токен, который сгенерировался во время создания.

После этого запустите файл main.py с помощью команды python3 main.py, предварительно установив все зависимости. Следующим шагом будет добавление бота на сервер. Обратите внимание, что после добавления, роль бота необходимо переместить в самый верх, иначе во время работы будут случаться ошибки.

После того, как вы пригласите вашего бота, в файле config.json появится JSON-объект следующего вида:

{
"633673794468446270": {
        "moderator_channel": null, 
        "main_role": 634300711688994817,
        "moderators_role": 635073118045470751,
        "join_channel_id": 637487510217424908,
        "reactions": {
            "wikipedia": 635091804902916106,
            "🎦": 376712814250950660
        },
        "message_id": 635095374780039178,
        "message_channel": null,
        "time_adding": "2019-10-26 22:55:41.709699",
        "owner": "OlegCinema#7385",
        "created_at": "2019-10-15 14:33:25.691000",
        "prefix": "$",
        "bot_name": "OlegCinema"
    }
}

Заполните следующие поля, после чего сохраните файл:

  1. main_role — ID (целое число) роли, которая будет присваиваться в случае успешного подтверждения аккаунта.
  2. moderators_role — ID (целое число) модераторской роли.
  3. join_channel_id — ID (целое число) канала, в котором будет осуществляться верификация (например, #login).
  4. message_id — ID (целое число) сообщения, под которым будут стоять реакции для добавления в каналы.
  5. reactions — словарь, в котором ключ — название emoji (обратите внимание, что если это базовые emoji, то необходимо поставить само emoji в качестве ключа, а если это загруженное emoji, то его название), а значение — ID (целое число) роли, которая будет присваиваться после нажатия. Внимание! Перед добавлением в файл конфигураций создайте соответствующее сообщение и поставьте под ним реакции.
  6. bot_name — название аккаунта в Википедии, который будет благодарить правки.

Контакты

Если вы желаете внедрить бота на свой сервер, свяжитесь со мной по электронной почте olegcinemaw@mail.ru или по дискорду OlegCinema#7385.