540 - Un sorteabot y cuatro Raspberry Pi
Utilizar un sorteabot o #bot de #telegram para realizar sorteos. Y si quieres desarrollar un bot en #Python y ponerlo en marcha en #Linux de forma muy fácil
Casi llegó el momento de sortear las Raspberry. Y digo casi, porque todavía tengo que dejar un tiempo para poder hacer el sorteo. Durante este episodio, te explicaré tanto la razón como la metodología. Pero, no solo esto, sino que además, del sorteo, te doy otra buena o al menos interesante noticia, y es que esto va acompañado de un nuevo bot para Telegram que se encargue de precisamente realizar esta tarea. Así, a continuación de contaré sobre el sorteabot y estas cuatro Raspberry
Un sorteabot y cuatro Raspberry Pi
Un paseo por el pasado
En el episodio 500…
Creo que fue en el episodio número 500 del podcast, en el que, aprovechando que llegaba el episodio 500, decidí sortear tres Raspberry. Y decidí sortear tres Raspberry porque básicamente no le estaba dando utilidad y bueno, pues, alguna manera había de festejar eso de llegar a los 500 episodios del podcast y me pareció una manera muy interesante.
Sin embargo, después de meterme en el semejante follón, me di cuenta que había un detallito que había omitido por completo. Un detallito que te voy a contar hoy en este episodio del podcast y que te voy a dar también la solución al problema que encontré en ese momento.
Bueno, además del problema, quiero decir, además del problema propio de que te contaré, además está la pereza. Porque poner en marcha cosas, sobre todo de boquillo, es muy sencillo, pero cuando luego las llevas las plasmas en la realidad, las cosas no son tan sencillas como parecían ser.
¿Como obtener un listado de usuarios?
Cuando voy a sacar el listado de usuarios del grupo para poder realizar el sorteo, caigo en un detalle que ya me había pasado en otras ocasiones, cómo puedo sacar ese listado.
A través de la API bot de Telegram, no es posible sacar el listado de usuarios que hay en un grupo. Sí que se puede hacer de otras maneras, utilizando otro tipo de técnicas, pero no directamente así. Entonces, como no podía, estuve dándole vueltas a las posibilidades que tenía para hacer esto de sacar los usuarios que había en el grupo para realizar sorteo.
Sorteos en Telegram
Hace unos días Telegram sacó una nueva versión y en esa nueva versión se hablaba de sorteos y pensé, tate, esta es la mía. Si están hablando de sorteos, a lo mejor está es la solución que andaba buscando para poder realizar el sorteo. Pero no, no exactamente, no es lo que yo esperaba. Al parecer o por lo que he podido leer hasta el momento, esto de la posibilidad de realizar sorteos, se refiere básicamente a sortear membresías para Telegram, o por lo menos es hasta donde yo he llegado.
A lo mejor, es que también hace falta ser premium para realizar sorteos. La cuestión es que, después de darle vueltas, pues, tampoco lo he encontrado. Además, me parece que esta opción está circunscrita, única y exclusivamente a los canales y no a los grupos.
bots de Telegram para sorteos
Tampoco es que le haya dedicado mucho atención, porque al ver estos primeros detalles, pues me ha entrado un poquito de frustración y me he dejado llevar. Me he dejado llevar, hasta que en un momento determinado se me ha encendido una bombillita y he pensado, hombre, si estos chicos de Telegram ya han decidido hacer o fomentar el tema de los sorteos a lo mejor es posible que hayan bots que hagan esto de los sorteos.
Total, que en un momento determinado me he metido a buscar bots que permitieran hacer precisamente realizar sorteos. Y lo que me he encontrado es básicamente lo que yo ya sabía, es decir, que para realizar el sorteo tienes que realizar algún tipo de acción.
Realizar alguna acción sobre el bot para que el este pueda recoger los datos, porque de otra forma no puede recoger los datos y aquí es, básicamente donde está el problema.
La forma de recoger los datos, por ejemplo, para los distintos bots que estábamos encontrando, es que tú digas que participas en un sorteo. Cuando dices que participas se recogen tus datos y luego pues con esos datos se realiza el sorteo.
Así que me quedé pensando, hombre, pues ya que tenemos esto de historias de un Pythonico, ¿por qué no le damos una vuelta y metemos toda la misma caja? Quiero decir, metemos el tema del sorteo con lo de historias de un Pythonico.
Otras maneras
Antes de continuar te estarás preguntando, ¿pero hay otras formas de sacar todos los usuarios?. Sí, como bien sabes hay usuarios que realmente no son usuarios, que son bots. Estos usuarios, que realmente son bots que simulan ser humanos, no tienen el flag de que es bot, sino que directamente simulan ser una persona. Entonces, estos sí que pueden recoger todos los datos que hay en un usuario.
Sin embargo, ahí yo creo que estás tocando una delgada línea entre lo que puede ser fraudulento y lo que no puede ser fraudulento. Así que me dije, no nos vamos a meter en un jardín en el que podemos salir trasquilados. Vamos directos a implementar un bot.
Así que, vamos a implementar un sorteabot. De manera, por un lado vamos a explicar nuevas características de Python, por otro, vamos a sortear cuatro raspberry y vamos a hacer algo realmente interesante. Algo que cualquiera pueda utilizar cuando le dé la gana.
Historias de un Pythonico
Así es como surgió el tema del sorteo a bot, y la integración con historias de un Pythonico.
Aprovechando esto de historias de un pitónico, como te digo, gran parte del código que utilizo para historias de para el sorteo a bot viene de otros dos bots que ya he implementado,
- Uno que es un bot para seguir el vx35
- Otro bot que se llama el mementobot, que es un bot para que te recuerde cosas.
Sobre el mementobot todavía no he hablado nada, sí que está implementado en GitHub. Todavía no he publicado nada ni en el podcast, ni en YouTube, ni en ningún sitio, pero publicaré, no te preocupes.
Pero sí que me sirve para, como te digo yo, para una base sobre la que está implementado sorteabot.
Está basado en esos dos, añadiendo algunas cositas, como por ejemplo, he mejorado un poco la parte de los logs y luego por otra parte lo que he hecho ha sido hacer una integración con base de datos.
Porque los datos para realizar el sorteo los guarda una pequeña base de datos en un SQLite y ahí tiene que hacer inserciones, tengo que hacer borrados y tengo que hacer algunos updates
.
Son pequeñas modificaciones, pero que hay que hacerlas y hay que tenerlas en cuenta.
¿Como funciona el sorteabot?
Básicamente, el sorteabot, tiene dos puntos,
- un primer punto que es para apuntarte, simplemente pones
/participo
y ya te apunta al sorteo - y en caso de que no quieras participar, no quieras que tus datos queden ahí o la razón que sea, simplemente tienes que escribir
/no-participo
y directamente te borrará de la base de datos.
Ahora te estás preguntando y qué datos se guardan en la base de datos? Se va a guardar,
- el id del usuario, me refiero al id de telegram,
is_bot
si es un bot o no es un bot, el flag me refiero- se guarda el
first_name
, - el
last_name
, - el
user_name
- el
language_code
.
Todo esto lo puedes ver en la API de telegram, quiero decir en la API de telegram se recogen todos estos datos y todos estos datos, si tienes algún bot los está recogiendo. Bueno, los está recogiendo o los puede recoger.
Yo en este caso los voy a recoger única y exclusivamente para realizar este sorteo. Una vez haya hecho el sorteo, voy a borrar todos los datos porque a mí, como comprenderás, tener el id, el first name, el second name y todas estas cosas de una persona me importan lo más mínimo.
Probablemente, no, con toda certeza, a un bot de estos que van invitándote a participar o a comprar bitcoins o cualquier otra criptomoneda, seguro que sí que le interesa.
Como te digo, cada vez que pones, cada vez no, la primera vez que pones participo simplemente va a guardar todos los datos en la base de datos y si pones no participo los va a quitar, simplemente eso.
Luego hay otra opción que es la de sorteo. Siempre y cuando tú seas administrador, como no vas a ser administrador del grupo donde voy a realizar el sorteo, pues básicamente no vas a poder realizar el sorteo.
Seguramente te pondrá un mensajito de que no eres administrador y que no puedes ejecutarlo.
Hacer una salvedad. Para hacer esto, lo que he hecho o lo que hago básicamente es que una vez estén recogidos todos los datos, se sortea entre todos los usuarios que no hayan recibido ningún premio. Por ejemplo, después de sorteada la primera, si te ha tocado, ya no vas a participar en el resto de sorteos. Más que nada para poder repartir las Raspberry a cuanto a más gente mejor.
¿Por qué cuatro?
Como te decía en el episodio 500, dije que iba a sortear tres, pero realmente tengo cuatro y dije que me iba a quedar la cuarta para hacer pruebas.
Pero dado que han pasado 40 episodios desde que lo dije, pues bueno, yo creo que es lícito sortear las cuatro y yo por ahora no me voy a quedar con ninguna a espensas de que salga la Raspberry 5, que por ahí ya la han anunciado y a lo mejor la compró.
No lo tengo claro porque últimamente estoy muy volcado con el VPS y ahora mismo no tengo mucha intención.
¿Puedo tener mi propio sorteabot?
Si te interesa utilizar el sorteabot tiene la ventaja de que no tienes que tenerlo alojado en ningún VPS, lo puedes tener alojado perfectamente en un ordenador o en un Raspberry, o donde tu quieras, pero con la condición de que que siempre esté funcionamiento. Realmente, lo único que necesita es acceso a internet, pero no necesita un endpoint, accesible desde internet.
Pero te lo puedes instalar donde quieras. Se trata de un docker, y tanto el código lo puedes encontrar en GitHub como el docker lo puedes encontrar en Docker Hub, simplemente lo instalas y punto.
¿Qué datos le tienes que pasar al docker? Simplemente le tienes que pasar el token del bot y dónde vas a guardar la base de datos.
Un vídeo sobre sorteabot
Publicaré un vídeo en Fediverse TV y en YouTube para contar exactamente cómo funciona este nuevo asistente de Telegram para realizar sorteos. Te contaré cómo puedes utilizarlo, cómo puedes instalarlo y luego te contaré algunos detalles de cómo está implementado el sorteabot.
El objetivo es que tu mismo te des cuenta que es realmente sencillo y que luego lo puedes personalizar tú para lo que exactamente tú necesites, ya sea por realizar sorteos directamente o no sé, o para recoger estadísticas o para hacer preguntas, en fin, cualquier cosa que a ti se te ocurra.
Cuando terminará el plazo para apuntarse al sorteo
El plazo terminará el último día del mes de Noviembre, que será el último día para apuntarse al sorteo. El 1 de Diciembre realizaré el sorteo, en el propio grupo de Telegram.
Más información,