Модераторские логи и инструментарий управления
Что это такое?
Модераторский инструментарий будет представлять собой набор инструментов для модераторов и администраторов, который позволит выдавать пользователям наказания на нарушения и ввести полезный лог произошедший действий.
Как это будет работать?
База Данных
С базой данных не всё так сложно, у нас будет таблица, которая будет хранить разные данные
infractions
- id: integer
- created: integer
- type: integer
- user: string
- moderator: string
- expires_at: integer
- reason: string
Инструментарий
Инструментарием будет служить набор команд
!warn <@упоминание / ID> [причина]
- выписывает пользователю предупреждение
!kick <@упоминание / ID> [причина]
- кикает пользователя с сервера
!ban <@упоминание / ID> [причина]
- банит пользователя на сервере
!tempban <@упоминание / ID> <продолжительность> [причина]
- выдает временный бан пользователю на сервере
!unban <ID> [причина]
- выдает разбан пользователю на сервере
!mute <@упоминание / ID> [причина]
- выдает пользователю мут и лишает возможности отправлять сообщения
!tempmute <@упоминание / ID> <продолжительность> [причина]
- выдает временный мут пользователю и лишает возможности отправлять сообщения
!unmute <@упоминание / ID> [причина]
- снимает мут с участника
!log <mod|server> set <channel|bits> <значение>
- устанавливает параметры модераторского или серверного лога, такие как "канал" (куда будут отправляться сообщения) и "биты" (что конкретно будет отправлятся)
Техническая часть
Циклы
Циклов можно и следовало бы избежать, просто синхронизируя весь процесс с базой данных. Гораздо проще будет использовать встроенные setTimeout
при выдаче временного мута/бана. Чтобы ничего не случилось, во время запуска плагина будут считыватся все события, и временные снова получат свой таймер setTimeout
.
Биты
Это так же не самая сложная задача, при новом сообщении для лога бот опять же будет доставать из базы данных параметры каналов и оставлять их в кэш-карте, это займет меньше времени, чем постоянный пинг базы данных при любом сообщении.
Предполагаемые биты для логов:
Modlog: BAN|KICK|MUTE|CUSTOM_BAN|CUSTOM_KICK|UNBAN|UNMUTE
Serverlog: BAN|KICK|MUTE|CUSTOM_BAN|CUSTOM_KICK|UNBAN|UNMUTE|CHANGED_USERNAME|CHANGED_NICKNAME|MESSAGE_EDITED|MESSAGE_DELETED|USER_LEFT|USER_JOINED
Синхронизация
Сообщения о нарушениях, скорее всего, будут глобальными. Это предстоит решить.
Оригинальные идеи
Оригинальное исполнение взято у RowBoat, исполнитель - b1nzy.