modbot.py/README_RU.md

148 lines
11 KiB
Markdown
Raw Permalink Normal View History

2022-04-18 01:20:01 +00:00
# modbot.py
Питоновый бот для помощи с модерацией [Peertube Livechat](https://github.com/JohnXLivingston/peertube-plugin-livechat)
2022-04-18 02:02:09 +00:00
В текущем виде предназначен для локального запуска пользователем, желающим осуществлять модерацию. Один запущеный бот таргетит одну комнату чата.
2022-04-18 01:47:20 +00:00
2022-04-18 01:20:01 +00:00
## А что может?
- Мьютить(mute) юзера
- Анмьютить юзера
- Таймаутить юзера (мьют, который снимется сам через заданное время)
- Отслеживать, чтобы юзер не обходил мьют сменой ника (да, по дефолту может)
- Удалять все сообщения юзера
- Банить юзера (сразу вместе с удалением сообщений)
- Несколько режимов работы чата
- Анмьютнуть всех
- Мьютить свежеприбывших неавторизованных юзеров
- Замьютить ВСЕХ неавторизованных юзеров
- Замьютить вообще всех, кроме модераторов
- Рейтлимиты (юзер, отправивший больше Х сообщений за Y секунд будет таймаутнут на Z секунд)
- Списки запрещенных слов в сообщениях и никах.
2022-04-18 01:47:20 +00:00
## Планы на будущее
2022-04-18 02:02:09 +00:00
Скрипт на питоне - безусловно субоптимальное решение проблемы модерации. Хотелось бы развить это до бота, которого можно было бы держать как сервис на сервере, который автоматически заходил бы во все чаты и помогал поддерживать порядок, имел свои persistent-настройки на каждый чат, и, возможно, имел бы веб-интерфейс.
2022-04-18 01:47:20 +00:00
2022-04-18 02:02:09 +00:00
Проблема в том, что при таком масштабе **ГОРАЗДО** более вменяемым решением было бы уже написание своего плагина чата на Peertube, в котором всё было бы *как надо* с самого начала. На что лично у меня пока совершенно нет ни времени, ни сил, ни скилла, ни энтузиазма.
Посему бота не планируется развивать как-то капитально - правка багов, существующих и вызванных апдейтами, какой-то функциональный допил по мелочи, по заказу телезрителей, не более.
2022-04-18 01:47:20 +00:00
2022-04-18 01:20:01 +00:00
## Требования
- Python 3
2022-04-18 02:02:09 +00:00
- Requests (`python3 -m pip install requests`)
2022-04-18 01:20:01 +00:00
2022-04-18 01:47:20 +00:00
Если вы на винде и у вас лапки, то питон [можно достать тут](https://www.python.org/downloads/), бота архивом [скачать здесь](https://inex.dev/lnkr/modbot.py/archive/master.zip), а в папке с ботом есть файл [start_modbot.bat](./modbot/start_modbot.bat), по даблклику на который установятся остальные зависимости и запустится бот.
2022-04-18 01:20:01 +00:00
2022-04-18 02:07:52 +00:00
## Установка
Всё необходимое барахло валяется в папке [modbot](./modbot) в этом репозитории.
Клонируйте репозиторий `git clone https://inex.dev/lnkr/modbot.py.git`
Или скачайте [.zip-архивом](https://inex.dev/lnkr/modbot.py/archive/master.zip)
И откройте папку `modbot`.
2022-04-18 01:20:01 +00:00
## Настройка
2022-04-18 01:47:20 +00:00
Отредактируйте [settings.py](./modbot/settings.py) (как текстовый файл).
2022-04-18 01:20:01 +00:00
- **instance** - сюда вписать домен инстанса Peerture. Без https и слэшей.
- **username** и **password** - имя пользователя и пароль от аккаунта на данном инстансе, который послужит ботом.
- **room** - здесь UUID комнаты чата [(Где взять UUID комнаты чата???)](./where_to_get_room_uuid.png).
Вы можете использовать аккаунт, владеющий правами модератора в выбранной комнате. Это значит, что если вы рядовой юзер, вы можете использовать свой аккаунт в качестве бота в комнате собственного стрима, а если вы модератор инстанса Peertube - в любой комнате.
#### Необязательные настройки там же:
- **timeout_default** - на сколько секунд будет затаймаучен юзер, если была введена команда **!timeout** без указания времени.
- **ratelimit_timewindow** - временное окно для измерения рейтлимитов
- **ratelimit_maxmessages** - сколько сообщений может отправить юзер в пределах временного окна
- **ratelimit_timeout** - на сколько секунд будет замьючен юзер, отправивший больше.
Впишите слова, заблокированные в никнеймах, в файле **bannedusernames.txt**, и заблокированные в чате - в файле **bannedwords.txt**. По одному слову на строку. Эти файлы можно изменять в процессе работы бота - обновления подтянутся и применятся автоматически.
## Запуск
```
cd modbot
python3 modbot.py
```
Или даблклик по `start_modbot.bat`, если вы почётный пользователь виндовсов.
Если всё введено правильно, то в чате стрима вы увидите "*[ModBot]: Online!*" - на этом этапе бот успешно подключен к комнате.
## Команды
2022-04-18 02:02:09 +00:00
Вводить команды можно в чате стрима, если у вас есть права модератора в комнате, а так же в терминале с запущеным ботом. Ответ вернётся туда, где была введена команда.
2022-04-18 01:44:32 +00:00
**Внимание** - USERID в командах - не jid и не ник пользователя, это выданный ему ботом числовой порядковый номер. Подробнее об USERID - в описании команд и вывода в окне терминала.
2022-04-18 01:20:01 +00:00
`!help` - вывод короткой справки по командам.
2022-04-18 01:44:32 +00:00
`!users` - вывести список пользователей.
2022-04-18 01:20:01 +00:00
2022-04-18 01:44:32 +00:00
Список пользователей выводится в следующем формате:
2022-04-18 01:20:01 +00:00
2022-04-18 02:02:09 +00:00
USERID) [name] (jid, role, affiliation)
2022-04-18 01:20:01 +00:00
2022-04-18 01:44:32 +00:00
Например:
2022-04-18 01:20:01 +00:00
2022-04-18 01:44:32 +00:00
13) [lnkr] (lnkr@xxivproduction.video, moderator, owner)
2022-04-18 01:20:01 +00:00
2022-04-18 01:44:32 +00:00
Здесь:
- 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` - jid
- `x1` - количество отправленных друг за другом сообщений пользователя
- `Я веду общение` - Сообщение или его фрагмент
2022-04-18 02:02:09 +00:00
Глядя на такие логи, можно быстро прикинуть, что одному абоненту можно прописать `!ban 2` за оскорбления (что заодно вычистит его сообщения), а второму - `!timeout 3 30` просто так, чтоб не расслаблялся.
Удачных стримов!