75 - Acabar con el spam en Telegram con un bot

75 - Acabar con el spam en Telegram con un bot

Si administras un grupo, te preocupa la privacidad y estás cansado del spam, escucha este podcast en el que te explico como acabar con el spam en Telegram

1:25
-3:15

Por suerte o por desgracia, actualmente solo administro un grupo público de Telegram Ubuntizados. Y aunque tengo la suerte, que los que allí residimos nos llevamos razonablemente bien, lo cierto es que últimamente el spam está a la orden del día, y no es que allí allí mas que en otros grupos. Y la verdad es que el spam es molesto. Así que la semana pasada y tras la sugerencia de algunos compañeros de grupo, me decidí a implementar un bot para acabar con el spam en Telegram.

No tengo muy claro cuan efectivo es esto de la publicidad mediante spam en Telegram. Supongo que poco o muy poco efectiva. Sin embargo, al final es cuestión de estadística. Supongo que funcionará como en otros campos de internet. Es decir, que si el anuncio lo ven 100 personas, una o dos pica. Por supuesto que como el bot que inserta publicidad trabaja a todas horas y tiene un coste muy barato, será rentable.

Sin embargo, no creo que para la imagen del anunciante sea ni mucho menos que positiva. Mas bien todo lo contrario. Lo cierto, es que yo no me he fijado. Los que he visto creo que son de cripto-monedas. Pero no he tenido la oportunidad, o las ganas de visitar el anuncio.

En fin, sea como fuere, en el episodio de hoy te voy a contar como puedes utilizar este bot tu también para integrarlo en tu grupo de forma sencilla y acabar dfe esta forma con el span en Telegram. Vas a necesitar muy poco, así que si tienes un grupo, esta puede ser la solución para luchar contra el spam en Telegram.

Acabar con el spam en Telegram con un bot y tu Rasbperry Pi

Acabar con el spam en Telegram con un bot

Antes de meternos en faena, te quiero comentarte el truco del episodio. Últimamente he visto, que tengo muchos pequeños trucos e ideas, que no son para llenar un podcast, completo, pero si que pueden ser para una pequeña sección. Así que, a partir de este mismo episodio, voy a introducir esta nueva sección para compartir contigo estos pequeños trucos, ideas o consejos.

El truco del episodio

Aunque suelo utilizar less mas que cat lo cierto, es que para archivos mas cortos me suelo decantar por el segundo. Sin embargo, el problema lo encuentro en que no

La solución utilizar ccat

wget https://github.com/jingweno/ccat/releases/download/v1.1.0/linux-amd64-1.1.0.tar.gz
tar xfz linux-amd64-1.1.0.tar.gz
sudo cp linux-amd64-1.1.0/ccat /usr/local/bin/
sudo chmod +x /usr/local/bin/ccat

Luchar contra el spam en Telegram con un bot

Muy probablemente te estés preguntando porque no he utilizado alguno de los bots que hay disponibles en Telegram para luchar contra el spam. Son varios motivos los que me llevan a esto. En primer lugar está el tema de la privacidad, que lo considero algo fundamental. Yo decido quien puede y quien no puede registrar, guardar, almacenar mis conversaciones. No quiero que lo decida otra persona por mi.

Privacidad

Así, soy consciente de que cuando utilizo el asistente de Google me está grabando. Sin embargo, con un bot de terceros, que se supone que solo sirve para eliminar el spam, ¿quien me asegura que no está registrando las conversaciones?. Por supuesto, que si en lo que respecta a mi privacidad soy celoso, en lo que respeta a la privacidad de los usuarios que están en el grupo, soy mas celoso si cabe.

En este sentido, el objetivo ha sido implementar un bot que guarde la mínima información necesaria y que cumpla con su función.

Inteligencia

La segunda de las razones para implementar este bot ha sido dotarle de cierta inteligencia, esto puesto entre comillas, por supuesto. No pretendo decir que este bot va a tener inteligencia artifical, donde vamos a parar. Pero si que me llama mucho la curiosidad, las técnicas que están implementando para enviar la publicidad. Los spamers no son robots. De eso ya me he dado cuenta, pero ¿que son?¿Quien los genera?¿Como detectarlos?

En este sentido esta primera versión del bot, tiene dos mecanismos para detectar si se trata de un bot o de un ser humano. El primer mecanismo es si está directamente identificado en Telegram. Si está identificado, directamente se expulsa del grupo. Sin preguntar, ni nada. A las bravas.

El problema es si no está identificado. ¿Como saber si es un bot? En este sentido, se me ha ocurrido, formular una sencilla pregunta, y es sobre su naturaleza. En este sentido, mediante una botonera muestro nueve respuestas, entre las que está la correcta que es humano. Para complicarle un poco la vida al bot, la posición de las respuestas es aleatoria, y va cambiando de una vez a otra. Igualmente, el número de la respuesta también es aleatorio.

Como digo esta es una primera versión, y serán los compañeros de Ubuntuizados los primeros que lo disfrutarán o padecerán… ya veremos. La idea, es ir mejorándolo en sucesivas entregas, de forma que entre todos consigamos algo realmente potente, y que no deje pasar ni una.

Requerimientos

Vas a necesitar un servidor con Apache o Nginx, porque este bot utiliza un webhook para su funcionamiento. Esto no quita a que el servidor sea tu Raspberry. Simplemente tienes que conseguir que ese webhook esté accesible desde internet. En mi caso lo tengo en un VPS, que es lo mas fácil. Sin embargo, a continuación, te voy a indicar como lo puedes hacer para tenerlo directamente en tu Raspberry Pi. De esta forma, si te decantas por el VPS, simplemente tienes que quitar aquellos pasos que no necesites.

Te indico paso a paso lo que debes hacer,

  • El primer paso es conseguir que tu Raspberry tenga IP fija en tu red local, y redirigir los puertos 80 y 443 del router a tu Raspberry.
  • Como he indicado, es primordial que tu webhook esté accesible desde internet. En este caso, si tienes una IP dinámica que es lo mas normal, debes utilizar un DNS dinámico como puede ser duckdns. Para hacerlo, te recomiendo le des un vistazo al artículo sobre IP dinámica del tutorial sobre tu nube en la Raspberry Pi.
  • Necesitarás tener Apache o Nginx en la Raspberry. En el capítulo del tutorial sobre los primeros pasos en la Raspberry dedicado a Nginx en la Raspberry Pi, te indico como. En este capítulo, además te explico como instalar MariaDB. Sin embargo, con el objetivo de hacer el bot, lo mas sencillo posible, no hace uso de ninguna base de datos, y la información la guarda directamente en un archivo json.
  • El siguiente paso es cifrar las comunicaciones. Para ello tienes que tener Let’s encrypt en tu Raspberry, según te indico.

Ahora tienes que poner el repositorio en algún directorio de Nginx o Apache que sea visible. Para clonar el repositorio simplemente ejecuta la siguiente instrucción,

git clone https://github.com/atareao/antispam.git

A continuación edita el archivo params.inc indicando la configuración que necesites. Como verás son parámetros muy básicos. El token, la URL y el identificador del grupo.

Para conseguir el token tienes que crear un bot con BotFather, tal y como te explico en el tutorial sobre como crear tu propio bot para Telegram.

Una vez definido el bot, y configurado, el siguiente paso, es establecer el webhook. Esto lo puedes hacer siguiendo los pasos que te indico en el capítulo de webhooks. Es muy, pero que muy sencillo.

¿Que queda por hacer?

La verdad es que este no es mas que el primer paso de lo que tiene que llegar a ser un interesante bot para filtrar, un bot para intentar acabar con el spam en Telegram. A partir de aquí, necesito de tu ayuda, para que conforme veas su funcionamiento me vayas indicado que crees donde se puede mejorar, y como hacerlo. Se que es un trabajo, pero piensa que es para el bien de todos.

Antes de despedirme, indicarte que he apuntado a atareao.es a los Open Awards 2019 en la categoría de mejor medio o blog. En este sentido, quiero pedirte tu voto para hacer llegar este sitio a cuanta mas gente mejor. Para ello puedes votar a atareao.es como mejor blog en Open Awards 2019


Más información,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *