8.5 KiB
modbot.py
Питоновый бот для помощи с модерацией Peertube Livechat
А что может?
- Мьютить(mute) юзера
- Анмьютить юзера
- Таймаутить юзера (мьют, который снимется сам через заданное время)
- Отслеживать, чтобы юзер не обходил мьют сменой ника (да, по дефолту может)
- Удалять все сообщения юзера
- Банить юзера (сразу вместе с удалением сообщений)
- Несколько режимов работы чата
- Анмьютнуть всех
- Мьютить свежеприбывших неавторизованных юзеров
- Замьютить ВСЕХ неавторизованных юзеров
- Замьютить вообще всех, кроме модераторов
- Рейтлимиты (юзер, отправивший больше Х сообщений за Y секунд будет таймаутнут на Z секунд)
- Списки запрещенных слов в сообщениях и никах.
Требования
- Python 3
- Requests (python3 -m pip install requests)
Если вы на винде и у вас лапки, то питон можно достать тут, бота архивом скачать здесь, а в папке с ботом есть файл start_modbot.bat, по даблклику на который установятся остальные зависимости и запустится бот.
Настройка
Отредактируйте settings.py (как текстовый файл).
- instance - сюда вписать домен инстанса Peerture. Без https и слэшей.
- username и password - имя пользователя и пароль от аккаунта на данном инстансе, который послужит ботом.
- room - здесь UUID комнаты чата (Где взять UUID комнаты чата???).
Вы можете использовать аккаунт, владеющий правами модератора в выбранной комнате. Это значит, что если вы рядовой юзер, вы можете использовать свой аккаунт в качестве бота в комнате собственного стрима, а если вы модератор инстанса Peertube - в любой комнате.
Необязательные настройки там же:
- timeout_default - на сколько секунд будет затаймаучен юзер, если была введена команда !timeout без указания времени.
- ratelimit_timewindow - временное окно для измерения рейтлимитов
- ratelimit_maxmessages - сколько сообщений может отправить юзер в пределах временного окна
- ratelimit_timeout - на сколько секунд будет замьючен юзер, отправивший больше.
Впишите слова, заблокированные в никнеймах, в файле bannedusernames.txt, и заблокированные в чате - в файле bannedwords.txt. По одному слову на строку. Эти файлы можно изменять в процессе работы бота - обновления подтянутся и применятся автоматически.
Запуск
cd modbot
python3 modbot.py
Или даблклик по start_modbot.bat
, если вы почётный пользователь виндовсов.
Если всё введено правильно, то в чате стрима вы увидите "[ModBot]: Online!" - на этом этапе бот успешно подключен к комнате.
Команды
Вводить команды можно в чате стрима, если у вас есть права модератора в комнате, а так же в терминале с запущеным ботом. Внимание - USERID в командах - не jid и не ник пользователя, это выданный ему ботом числовой порядковый номер. Подробнее об USERID - в описании команд и вывода в окне терминала.
!help
- вывод короткой справки по командам.
!users
- вывести список пользователей.
Список пользователей выводится в следующем формате:
**USERID**) [name] (jid, role, affiliation)
Например:
13) [lnkr] (lnkr@xxivproduction.video, moderator, owner)
Здесь:
- USERID: 13
- Ник: lnkr
- jid: lnkr@xxivproduction.video
- роль: moderator
- принадлежность: owner
!usersall
- вывести список всех замеченных пользователей, включая ушедших.
!mute USERID
- замьютить юзера по его USERID
!unmute USERID
- размьютить юзера
!timeout USERID X
- замьютить юзера на X секунд
!wipe USERID
- удалить сообщения юзера
!ban USERID
- забанить юзера и удалить его сообщения
!ratelimits M W S
- переписать рейтлимиты: разрешить одному пользователю до M сообщений за W секунд, иначе замьютить его на S секунд
Команды переключения режимов "осады"
!mode 0
- снять со всех мьют
!mode 1
- автоматически мьютить незарегистрированных пользователей, которые зашли после этой команды
!mode 2
- замьютить всех существующих и будущих незарегистрированных пользователей
!mode 3
- мьютить всех, кроме модераторов (также известна как !shutup
)
Что выводится в консоли и где ещё мне быстро брать USERID?
Отличный вопрос! Рассмотрим демонстрационное содержимое окна консоли с ботом:
[04:32:47] (2|Собеседник|sobjisnvbudwdt1c@anon.xxivproduction.video|x1) Я веду общение
[04:32:55] (2|Собеседник|sobjisnvbudwdt1c@anon.xxivproduction.video|x2) Продолжаю вести общение, проверяй.
[04:33:30] (3|Собутыльник|xwvlahsevyq-73x-@anon.xxivproduction.video|x1) И я!
[04:33:32] (3|Собутыльник|xwvlahsevyq-73x-@anon.xxivproduction.video|x2) Я тоже веду общение!
[04:33:43] (2|Собеседник|sobjisnvbudwdt1c@anon.xxivproduction.video|x1) Мудак ты, Петя, а не общение ведёшь!
В окне с ботом выводится чат: информация о пользователе, и фрагмент его сообщения, в формате
[ВРЕМЯ] (USERID|USERNAME|JID|xCMN) ТЕКСТ
Присмотримся повнимательнее, что тут где:
[04:32:47] (2|Собеседник|sobjisnvbudwdt1c@anon.xxivproduction.video|x1) Я веду общение
[04:32:47]
- время2
- USERIDСобеседник
- никнеймsobjisnvbudwdt1c@anon.xxivproduction.video
- jidx1
- количество отправленных друг за другом сообщений пользователяЯ веду общение
- Сообщение или его фрагмент
Глядя на такие логи, можно быстро прикинуть, что одному абоненту можно прописать !ban 2
за оскорбления (что заодно вычистит его сообщения), а второму - !timeout 3 30
просто так, чтоб не расслаблялся