Hola Soy autor de varios bots populares para administrar grupos de telegramas: @daysandbox , @watchdog_robot y otros. Todos los días en el grupo de apoyo y en mensajes privados veo la misma pregunta: ¿cómo puedo protegerme de los robots de spam añadidos al grupo? Por lo general, también especifican que estos son bots de spam árabes. La gente está tratando de encontrar un bot antispam que elimine enlaces, elimine mensajes con caracteres árabes, elimine usuarios con caracteres árabes en sus nombres y cosas así. Pero todas estas son consecuencias, y en muchos casos la razón es la misma y es fácil de corregir. La razón es simple, pero no obvia.
¿Cuál es la singularidad del problema de los bots de spam agregados al grupo? Los bots de Telegram no ven mensajes de otros bots de Telegram. Incluso si ya tiene bots instalados en el grupo que eliminan enlaces, caracteres árabes y otras cosas, incluso si prohíben a los nuevos miembros escribir mensajes hasta que los nuevos miembros hagan clic en un botón o pasen algún tipo de prueba, esto no ayuda spam
El spam aparece en el siguiente escenario:
- miembro del grupo agrega bot de spam al grupo
- el bot anti-spam ve el hecho de agregar un bot
- bot anti-spam, llama al método API de telegramas, que restringe el bot de spam para escribir mensajes en el grupo. Por ejemplo, lo hace para todos los usuarios nuevos o solo para aquellos cuyo nombre de usuario contiene la palabra "bot" al final. No importa
- Transcurre un tiempo entre el momento en que un bot de spam ingresa a un grupo y los telegramas del servidor procesan una solicitud para restringir este bot para escribir derechos de chat. En este punto, el bot de spam puede enviar un mensaje al chat.
- El bot antispam no ve este mensaje, porque los bots no ven los mensajes de otros bots. Así es como funcionan los telegramas.
El escenario considerado muestra que no siempre es posible lidiar con las consecuencias de los bots agregados. Es más eficiente lidiar con la razón: la capacidad de agregar bots a un grupo por miembros del grupo.
Hay dos tipos de grupos de telegramas: públicos y privados. El tipo de grupo determina qué pueden hacer los administradores, los usuarios comunes y los bots dentro del grupo y cómo. Un requisito previo para un grupo público es la existencia de un enlace con el formulario " https://t.me/XXX ", mediante el cual puede ingresar al grupo. Para un grupo privado, no se requiere un enlace de inicio de sesión.
Considere el proceso de crear un grupo desde cero. Crea un grupo con la configuración predeterminada. Obtendremos un grupo privado sin un enlace de invitación. Intentemos agregar cualquier bot como un simple miembro del grupo. Agregado! ¿Cómo resolver el problema? La única forma de prohibir agregar bots a un grupo privado es prohibir agregar manualmente nuevos miembros, esto se hace mediante la casilla de verificación "Administración de grupos -> Permisos -> Agregar miembros". Esto limitará solo a los usuarios comunes, los administradores de grupo aún podrán agregar nuevos miembros (y bots) a mano.
Con el caso más simple resuelto. Ahora cree un enlace de invitación para ingresar al grupo: "Administración del grupo-> Información del grupo -> Enlace de invitación -> Crear enlace de invitación". Obtenemos un enlace de la forma " https://t.me/joinchat/ ...". Se crea un enlace de invitación para cada administrador, inicialmente solo el administrador que lo creó lo sabe. Ahora el administrador puede colocar este enlace donde lo considere conveniente, y cualquier usuario puede unirse al chat usando este enlace. En cualquier momento, el administrador puede generar un nuevo enlace de invitación, mientras que el enlace anterior dejará de funcionar.
Nota importante: los robots de spam no pueden ingresar al grupo mediante un enlace de invitación. Un bot de spam (y cualquier bot en general) puede ingresar al chat solo si alguien agrega manualmente el bot allí. La razón más común para que los bots de spam aparezcan en chats privados es cuando los administradores crean enlaces de invitación pero no deshabilitan (a través de Administración de grupos -> Permisos) la capacidad de agregar nuevos usuarios manualmente.
Ahora veamos qué sucede si transferimos un grupo de privado a público usando "Administración de grupo -> Información de grupo -> Grupo público". También tendremos que encontrar una dirección pública con el formato " https://t.me/XXX ", sin esto no podemos hacer público el grupo. Deja que sea " https://t.me/habr_test ". ¿Cuál es la diferencia entre un grupo público y un grupo privado con un enlace de invitación? Se puede encontrar un grupo público a través de una búsqueda interna de telegramas, y también puede ver cualquier mensaje grupal a través de la web en " https://t.me/habr_test/X ", donde X es el número de secuencia del mensaje en el grupo.
Entonces, nuestro grupo se ha hecho público, ha cambiado las propiedades de visibilidad, y no solo. Lo más interesante es que ya no puedes invitar a bots. Si se permite invitar a nuevos usuarios en "Administración de grupos -> Permisos", los usuarios pueden invitar a nuevos usuarios, pero solo a personas comunes, no a bots. Al intentar agregar un bot, aparece el error "Error al agregar usuario. Inténtalo de nuevo más tarde". Lo que necesitas!
Conclusión La inmunidad de infectar a un grupo con bots da una de dos acciones:
- Prohibir a los participantes regulares agregar bots (Gestión de grupo -> Permisos)
- transferir el grupo al modo público, es decir asignar al grupo una dirección del formulario " https://t.me/habr_test "
PD: El título del artículo es un pequeño clickbait. Por supuesto, una gran cantidad de spam de telegramas se genera no por bot-API bots, sino por bots que usan cuentas de usuario normales, pero el problema y su solución, descritos en el artículo, tienen un lugar para estar. Y tienen un lugar para estar todos los días, y dudé en responder las mismas preguntas sobre las mismas preguntas, por lo tanto, escribí este artículo.
UPD: creó un bot que elimina automáticamente los mensajes que contienen caracteres árabes y también elimina a los nuevos usuarios cuyos nombres tienen caracteres árabes. Simplemente instale el bot @noarab_bot en el chat y dele el derecho de eliminar mensajes y prohibir a los usuarios. Documentación del bot: https://tgdev.io/bot/noarab_bot
UPD2: si por una razón u otra es imposible hacer público el grupo o prohibir la incorporación de miembros en un grupo privado, puede usar el @watchdog_robot bot con el filtro "bot": watchdog eliminará los bots inmediatamente después de que alguien los agregue al chat.