Статус бот для телеграму

Торік я помітив, що став надто багато часу проводити у нашому пиріжок чаті. Постійне спілкування відбирало енергію, яку можна було б спрямувати на корисні справи. Взагалі, чат де ти активно спілкуєшся це чорна діра, куди непомітно витікає все мислепаливо.

Тому я чат передав довіреній особі, а сам з нього вийшов. Але мені хотілось залишити можливість видаляти повідомлення та банити користувачів. Чат прив'язаний до каналу і відповідно якщо в коментах неподобство то це не можна просто так залишати.

Ще пару років тому я робив бота який би мав видавати людям покарання за матюки. Олди пам'ятають фідошну систему */+/x, її теж хотів зробити. Але бот так і не запрацював як має бути, та просто висів у чаті виконуючи деякі сервісні функції.

Я згадав про нього і придумав простий спосіб як залишити собі можливість контролювати чат—треба просто навчити бота реагувати на мої команди.

Так я швиденько зробив команду del під повідомленням яка просто видаляла його.

Плинув час, я успішно перестав прокрастинувати у чаті, повернувшись натомість на HackerNews. А потім бахнула війна, і щоб якось бути в курсі що відубвається я знову повернувся до чату на постійній основі.

Тоді ж я звернув увагу що користувачам у чаті можна проставляти кастомні статуси. Якщо зробити користувача адміном, то за замовучанням він отримає статус "admin", таким чином інші учасники будуть бачити хто є хто. І ось цей статус можна міняти. Телеграм дозволяє робити адмінів "без прав", тобто можна безпечно роздавати статуси будь-яким користувачам. Єдине що вони зможуть робити— це бачити список адміністраторів та реєстр останніх дій.

Мені то здалося досить дотепним і я через довірену людину проставив відповідні статуси найактивнішим учасникам нашої спільноти.

Але адмінських прав у мене не було, а смикати власника чата на кожну зміну не хотілося.

Тоді я знову повернувся до бота. Через API можна додавати нових адмінів та ставити їм кастомні статуcи. Тиждень я прокрастинував, а вчора нарешті дістався до реалізації. По ходу справи викинув увесь старий код—визначення матюків, видачу покарань, підрахунок соціального рейтингу і так далі. Залишив тільки мінімум:

!del—видалити повідомлення

!ban—забанити користувача

!promote <статус>—надати користувачу статус

!demote—забрати в користувача статус

!top—подивитися топ користувачів по кількості повідомлень.

Схожі боти вже давно існують і мають ще багато всяких цікавих функцій, але мені не хочеться пускати чужинця у свій чат, тому і написав свого. До того ж це просто програмування заради задоволення.

Ви теж можете додати його собі: @chat_keeper_bot. Потрібно видати відповідні права: додавати адмінів, блокувати користувачів, видаляти повідомлення. Він буде реагувати тільки на команди тих учасників, які вже мають відповідні права. Нашо ж тоді бот, якщо можна це все робити через UI телеграму? Ну, я робив його для того щоб роздавати та видаляти навіть якщо я не є в чаті. Зараз це кастомна конфігурація у базі. А ще через команди зручніше.

Поки я писав-робив-деплоїв, то мені вся ідея зі статусами вже перестала здаватися такою ж дотепною як і раніше, а "статистика"—просто безглуздою.

Я хотів ще робити Web UI щоб можна було дивитися всіх учасників зі статусами і мати там кнопки щоб встановити/змінити, але посередині шляху зрозумів що то якась фігня і зупинився.

Втім я вирішив що так просто лишати бота не годиться, треба доводити справи до кінця, тому я його доробив і презентую вам.


Сподобалось? Долучайтеся до мого телеграм каналу: https://t.me/full_of_hatred