umputun / tg-spam

Anti-Spam bot for Telegram
https://tg-spam.umputun.dev
MIT License
165 stars 29 forks source link

Bot deletes messages of another bots even promoted to admin #15

Closed grayodesa closed 9 months ago

grayodesa commented 9 months ago

The bot recognized as a spam a message from another bot — it was basically the message from the channel posted by Telegram itself to a group linked to the channel. After unban and posting the same message again, the bot again detected a spam. I have added Telegram (ID: 777000) as a superuser to let the bot to ignore its messages.

Logs are below.

2023/12/14 12:54:48 stdout 2023/12/14 10:54:48.530 [DEBUG] {events/events.go:338 events.(*TelegramListener).sendBotResponse} bot response - permanently banned {777000  Telegram}\n⛔︎ unban if wrong ⛔︎\n\nВот вы всё "Apple", "Google", "монополия сторов" — мелко это всё. Вот поезда — это круто. В Польше одна региональная железная дорога решила сэкономить на обслуживании купленных пассажирских поездов Impuls от компании NEWAG и наняла независимую (от производителя) компанию для этого. После того, как сервисные работы были закончены, несколько поездов отказались заводиться. Ситуация была откровенно угрожающей (поездов не хватало для обеспечения перевозок), когда кто-то из персонала набрал в гугле "польские хакеры" и в итоге к проблеме подключились белые хакеры из группы Dragon Sector.   Им удалось разобраться с загадочными ошибками и обнаружить, что в поездах работает система распознавания "workshop-detection", которая начинает препятствовать работе, если обнаружено вмешательство неавторизованного механика. Короче говоря, производитель делает из поезда "кирпич", если его ремонтирует кто-то другой, показывая массу сообщений о нарушении копирайта и даже вроде имея возможность заблокировать поезд удаленно.  Хакерам удалось обойти это ограничение и запустить поезда. А производитель теперь отказывается от ответственности и заявляет, что ничего такого не делал и вообще грозит судиться с хакерами за клевету. Настаивая при этом, что ошибки были вызваны недостаточной квалификацией ремонтников, потому что обслуживать поезда должны только сотрудники производителя.   @blognot  https://www.404media.co/polish-hackers-repaired-trains-the-manufacturer-artificially-bricked-now-the-train-company-is-threatening-them/\n\n, reply-to:0
2023/12/14 12:54:48 stdout 2023/12/14 10:54:48.530 [WARN]  {server/server.go:232 server.(*SpamWeb).UnbanURL} failed to compress message "Вот вы всё \"Apple\", \"Google\", \"монополия сторов\" — мелко это всё. Вот поезда — это круто. В Польше одна региональная железная дорога решила сэкономить на обслуживании купленных пассажирских поездов Impuls от компании NEWAG и наняла независимую (от производителя) компанию для этого. После того, как сервисные работы были закончены, несколько поездов отказались заводиться. Ситуация была откровенно угрожающей (поездов не хватало для обеспечения перевозок), когда кто-то из персонала набрал в гугле \"польские хакеры\" и в итоге к проблеме подключились белые хакеры из группы Dragon Sector.   Им удалось разобраться с загадочными ошибками и обнаружить, что в поездах работает система распознавания \"workshop-detection\", которая начинает препятствовать работе, если обнаружено вмешательство неавторизованного механика. Короче говоря, производитель делает из поезда \"кирпич\", если его ремонтирует кто-то другой, показывая массу сообщений о нарушении копирайта и даже вроде имея возможность заблокировать поезд удаленно.  Хакерам удалось обойти это ограничение и запустить поезда. А производитель теперь отказывается от ответственности и заявляет, что ничего такого не делал и вообще грозит судиться с хакерами за клевету. Настаивая при этом, что ошибки были вызваны недостаточной квалификацией ремонтников, потому что обслуживать поезда должны только сотрудники производителя.   @blognot  https://www.404media.co/polish-hackers-repaired-trains-the-manufacturer-artificially-bricked-now-the-train-company-is-threatening-them/", encoded string is too long: 1622 characters
2023/12/14 12:54:48 stdout 2023/12/14 10:54:48.529 [DEBUG] {events/events.go:306 events.(*TelegramListener).reportToAdminChat} report to admin chat, ban data for {777000  Telegram}, group: 120025072
2023/12/14 12:54:48 stdout 2023/12/14 10:54:48.529 [INFO]  {events/events.go:206 events.(*TelegramListener).procEvents} {777000  Telegram} banned by bot for 9600h0m0s
2023/12/14 12:54:48 stdout 2023/12/14 10:54:48.436 [DEBUG] {app/main.go:260 main.execute.makeSpamLogger.func11} spam message: this is spam: "Telegram" (777000)
2023/12/14 12:54:48 stdout 2023/12/14 10:54:48.436 [INFO]  {app/main.go:259 main.execute.makeSpamLogger.func11} spam detected from {777000  Telegram}, response: this is spam: "Telegram" (777000)
2023/12/14 12:54:48 stdout 2023/12/14 10:54:48.436 [DEBUG] {events/events.go:198 events.(*TelegramListener).procEvents} ban initiated for {Text:this is spam: "Telegram" (777000) Send:true BanInterval:9600h0m0s User:{ID:777000 Username: DisplayName:Telegram} ChannelID:0 ReplyTo:42734 DeleteReplyTo:true}
2023/12/14 12:54:48 stdout 2023/12/14 10:54:48.161 [DEBUG] {events/events.go:338 events.(*TelegramListener).sendBotResponse} bot response - this is spam: "Telegram" (777000), reply-to:42734
2023/12/14 12:54:48 stdout 2023/12/14 10:54:48.161 [INFO]  {bot/spam.go:84 bot.(*SpamFilter).OnMessage} user Telegram detected as spammer: {name: stopword, spam: false, details: not found}, {name: emoji, spam: false, details: 0/2}, {name: similarity, spam: false, details: 0.10/0.50}, {name: classifier, spam: true, details: probability: NaN%, certain: true}, {name: cas, spam: false, details: Record not found.}, "Вот вы всё \"Apple\", \"Google\", \"монополия сторов\" — мелко это всё. Вот поезда — это круто. В Польше одна региональная железная дорога решила сэкономить на обслуживании купленных пассажирских поездов Impuls от компании NEWAG и наняла независимую (от производителя) компанию для этого. После того, как сервисные работы были закончены, несколько поездов отказались заводиться. Ситуация была откровенно угрожающей (поездов не хватало для обеспечения перевозок), когда кто-то из персонала набрал в гугле \"польские хакеры\" и в итоге к проблеме подключились белые хакеры из группы Dragon Sector. \n\nИм удалось разобраться с загадочными ошибками и обнаружить, что в поездах работает система распознавания \"workshop-detection\", которая начинает препятствовать работе, если обнаружено вмешательство неавторизованного механика. Короче говоря, производитель делает из поезда \"кирпич\", если его ремонтирует кто-то другой, показывая массу сообщений о нарушении копирайта и даже вроде имея возможность заблокировать поезд удаленно.\n\nХакерам удалось обойти это ограничение и запустить поезда. А производитель теперь отказывается от ответственности и заявляет, что ничего такого не делал и вообще грозит судиться с хакерами за клевету. Настаивая при этом, что ошибки были вызваны недостаточной квалификацией ремонтников, потому что обслуживать поезда должны только сотрудники производителя. \n\n@blognot\n\nhttps://www.404media.co/polish-hackers-repaired-trains-the-manufacturer-artificially-bricked-now-the-train-company-is-threatening-them/"
2023/12/14 12:54:47 stdout 2023/12/14 10:54:47.916 [DEBUG] {events/events.go:184 events.(*TelegramListener).procEvents} incoming msg: Вот вы всё "Apple", "Google", "монополия сторов" — мелко это всё. Вот поезда — это круто. В Польше одна региональная железная дорога решила сэкономить на обслуживании купленных пассажирских поездов Impuls от компании NEWAG и наняла независимую (от производителя) компанию для этого. После того, как сервисные работы были закончены, несколько поездов отказались заводиться. Ситуация была откровенно угрожающей (поездов не хватало для обеспечения перевозок), когда кто-то из персонала набрал в гугле "польские хакеры" и в итоге к проблеме подключились белые хакеры из группы Dragon Sector.   Им удалось разобраться с загадочными ошибками и обнаружить, что в поездах работает система распознавания "workshop-detection", которая начинает препятствовать работе, если обнаружено вмешательство неавторизованного механика. Короче говоря, производитель делает из поезда "кирпич", если его ремонтирует кто-то другой, показывая массу сообщений о нарушении копирайта и даже вроде имея возможность заблокировать поезд удаленно.  Хакерам удалось обойти это ограничение и запустить поезда. А производитель теперь отказывается от ответственности и заявляет, что ничего такого не делал и вообще грозит судиться с хакерами за клевету. Настаивая при этом, что ошибки были вызваны недостаточной квалификацией ремонтников, потому что обслуживать поезда должны только сотрудники производителя.   @blognot  https://www.404media.co/polish-hackers-repaired-trains-the-manufacturer-artificially-bricked-now-the-train-company-is-threatening-them/
2023/12/14 12:54:47 stdout 2023/12/14 10:54:47.916 [DEBUG] {events/events.go:162 events.(*TelegramListener).procEvents} {"message_id":42734,"from":{"id":777000,"first_name":"Telegram"},"sender_chat":{"id":-1001065632275,"type":"channel","title":"БлоGнот","username":"blognot","photo":null,"location":null},"date":1702551287,"chat":{"id":-1001226560034,"type":"supergroup","title":"БлоGнот комментарии","username":"blognot_chat","photo":null,"location":null},"forward_from_chat":{"id":-1001065632275,"type":"channel","title":"БлоGнот","username":"blognot","photo":null,"location":null},"forward_from_message_id":4533,"forward_date":1702551284,"is_automatic_forward":true,"text":"Вот вы всё \"Apple\", \"Google\", \"монополия сторов\" — мелко это всё. Вот поезда — это круто. В Польше одна региональная железная дорога решила сэкономить на обслуживании купленных пассажирских поездов Impuls от компании NEWAG и наняла независимую (от производителя) компанию для этого. После того, как сервисные работы были закончены, несколько поездов отказались заводиться. Ситуация была откровенно угрожающей (поездов не хватало для обеспечения перевозок), когда кто-то из персонала набрал в гугле \"польские хакеры\" и в итоге к проблеме подключились белые хакеры из группы Dragon Sector. \n\nИм удалось разобраться с загадочными ошибками и обнаружить, что в поездах работает система распознавания \"workshop-detection\", которая начинает препятствовать работе, если обнаружено вмешательство неавторизованного механика. Короче говоря, производитель делает из поезда \"кирпич\", если его ремонтирует кто-то другой, показывая массу сообщений о нарушении копирайта и даже вроде имея возможность заблокировать поезд удаленно.\n\nХакерам удалось обойти это ограничение и запустить поезда. А производитель теперь отказывается от ответственности и заявляет, что ничего такого не делал и вообще грозит судиться с хакерами за клевету. Настаивая при этом, что ошибки были вызваны недостаточной квалификацией ремонтников, потому что обслуживать поезда должны только сотрудники производителя. \n\n@blognot\n\nhttps://www.404media.co/polish-hackers-repaired-trains-the-manufacturer-artificially-bricked-now-the-train-company-is-threatening-them/","entities":[{"type":"mention","offset":1374,"length":8},{"type":"url","offset":1384,"length":135}],"message_auto_delete_timer_changed":null,"proximity_alert_triggered":null,"voice_chat_scheduled":null,"voice_chat_started":null,"voice_chat_ended":null,"voice_chat_participants_invited":null}
2023/12/14 12:54:12 stdout 2023/12/14 10:54:12.289 [INFO]  {server/server.go:179 server.(*SpamWeb).unbanHandler} unban user 777000
slawiko commented 9 months ago

I observed same thing. Here is log:

timestamp message
2023/12/13 15:42:58.736 user Tati 🇨🇻 detected as spammer: {name: stopword, spam: false, details: not found}, {name: emoji, spam: true, details: 7/2}, {name: similarity, spam: false, details: 0.03/0.50}, {name: classifier, spam: false, details: probability: 100.00%, certain: true}, {name: cas, spam: false, details: Record not found.}, "🔥🪗 21 снежня адбудзецца канцэрт аднаго з самых гіпнатычных і магічных акардэаністаў Еўропы - беларуса Ягора Забелава🪗🔥\n\nНекалькі год таму ён ужо збіраў поўную залю ў г. Гаага і зараз будзе рады пабачыць усіх на канцэрце ў Den Bosch! \n🍻 Пасля будзе нагода сустрэцца з музыкантам і беларусамі ў кафэ, паразмаўляць, падняць чарку за Каляды і Новы Год. \nКолькасць квіткоў абмежаваная, не прапусціце! \n🎟️ Замовіць квіткі: https://www.willem-twee.nl/alle-activiteiten/yegor-zabelov-743950\n\n📍21.12.2023, 20:15 Prins Bernhardstraat 4, Den Bosch"
2023/12/13 15:42:58.736 spam detected from {1171070045 TatiVanD Tati 🇨🇻}, response: Забаніў спамера: "Tati 🇨🇻" (1171070045)
2023/12/13 15:42:58.779 {1171070045 TatiVanD Tati 🇨🇻} banned by bot for 9600h0m0s
2023/12/13 15:59:20.201 unban user 1171070045
2023/12/14 07:46:56.148 user Tati 🇨🇻 detected as spammer: {name: stopword, spam: false, details: not found}, {name: emoji, spam: true, details: 7/2}, {name: similarity, spam: false, details: 0.03/0.50}, {name: classifier, spam: false, details: probability: 100.00%, certain: true}, {name: cas, spam: false, details: Record not found.}, "🔥🪗 21 снежня адбудзецца канцэрт аднаго з самых гіпнатычных і магічных акардэаністаў Еўропы - беларуса Ягора Забелава🪗🔥\n\nНекалькі год таму ён ужо збіраў поўную залю ў г. Гаага і зараз будзе рады пабачыць усіх на канцэрце ў Den Bosch! \n🍻 Пасля будзе нагода сустрэцца з музыкантам і беларусамі ў кафэ, паразмаўляць, падняць чарку за Каляды і Новы Год. \nКолькасць квіткоў абмежаваная, не прапусціце! \n🎟️ Замовіць квіткі: https://www.willem-twee.nl/alle-activiteiten/yegor-zabelov-743950\n\n📍21.12.2023, 20:15 Prins Bernhardstraat 4, Den Bosch"
2023/12/14 07:46:56.149 spam detected from {1171070045 TatiVanD Tati 🇨🇻}, response: Забаніў спамера: "Tati 🇨🇻" (1171070045)
2023/12/14 07:46:56.175 {1171070045 TatiVanD Tati 🇨🇻} banned by bot for 9600h0m0s
umputun commented 9 months ago

Well, this is expected. We don't want to exclude other bots as they may send spam. Your solution is acceptable; adding supers prohibits the bot from kicking them out. Maybe superuser is a little bit too much, but adding another list of "preapproved" users makes this thing more complicated for no good reason. The fact it is listed in superusers doesn't give those users any other super-powers unless you explicitly invite them to the admin chat.

grayodesa commented 9 months ago

I don't know, whether it is possible for a bot to get a list of admins of current chat, but if it is possible, maybe it makes sense to retrieve such a list and treat all admins of the chat as supers?

umputun commented 9 months ago

there is a method to get the list of admins, well, kind of. It worked in my test, but according to docs, bot's permission and admins' privacy settings can limit it. Anyway, added this thing to master, give it a try.

It will report detected admins in the log, like this: add admins to superusers: {test_usert, umputun}

umputun commented 9 months ago

in our chat it got all admins, except one. That should be due to the privacy settings, i guess {tgspam_umputun_bot, alek_sys,grayodesa, bobuk, umputun}

umputun commented 9 months ago

feel free to update master image, should address the issue

umputun commented 9 months ago

this was released as a part of v1.1.0, closing