GRUPO RASPYTHON => Primer proyecto, RaspythonBot [Únete y participa]
Publicado: 25 Jun 2017, 23:04
La Raspito's Family tiene un nuevo miembro en Telegram. En este caso, se trata de un grupo dedicado a la programación en Python orientada a Raspberry Pi. El grupo lo tenéis en el siguiente enlace...
https://t.me/Raspython
Pues bien, nuestro primer proyecto será crear un Bot moderador que realice tareas automáticas para el mantenimiento del grupo.
En estos primeros mensajes se irán recopilando, a modo de diario, lo que se vaya decidiendo y haciendo en las jornadas de debate y desarrollo, así como las horas aproximadas de reuniones virtuales.
El código del bot será público y se irá colgando en el siguiente github:
https://github.com/cpasoft/Raspython-Bot
Si alguien quiere ser colaborador, no tiene más que pasarme por privado su cuenta de github.
Invitaros a todos a participar. Da igual el nivel que tengáis, seáis unos consumados programadores o no tengáis ni un básico conocimiento de este lenguaje de programación. La idea es aprender, compartir y divertirse...
UN SALUDO!!!!
Raspython Group!
[Reunión virtual 25/06/2017]
Hemos empezado a decidir las primeras funciones de nuestro futuro Bot. El Bot ya tiene nombre, muy original por cierto. Se llama RaspythonBot y ya es accesible, pero obviamente no dice nada, porque no tiene ni una sola línea de código.
Aún no tenemos avatar para el bot, así que buscamos diseñadores que se animen a crear uno chulo.
Hemos creado un TODO con nuestras primeras intenciones. Empezaremos con funciones básicas, y ya nos iremos complicando poco a poco... El TODO está en: https://github.com/cpasoft/Raspython-Bo ... r/TODO.txt
Por último, hemos decidido que programaremos el bot en python 3.40 (que viene de serie en Raspbian) y que usaremos el framework de PythonTelegramBot, cuya web es: https://python-telegram-bot.org/
[Reunión virtual 26/06/2017]
Entre todos decidimos las normas, y decidimos igualmente que estas quedarán estáticas en el propio código, ya que las normas a penas serán moficadas, por lo que no merece el esfuerzo extra de tenerlas en un fichero externo editable desde el propio bot.
Se comenta de poner separadores de secciones, para que se vea más claro el tránsito de una sección a otra.
De momento vamos a prescindir de crear una base de datos (PostgreSQL, MariaDB o similar), por lo que usaremos ficheros del tipo Json para almacenar las variables que requieran duración en tiempo, como por ejemplo la base de datos de hashtags, la de la reputación de usuarios y similares... Como no esperamos una cantidad exorbitada de datos, asumimos que rendirán bien. Intentaremos hacer las funciones de importación y exportación de datos lo más transparente posible por si, en un futuro, tenemos la necesidad de migrar a otros sistemas (base de datos).
El compañero Darth nodlehS nos provee de un documento de Victor Terrón muy interesante, y a la postre se postean un par de vídeos que los complementa. Muy interesantes de ver. Están en el grupo.
También hablamos de implementar algún tipo de meme/broma al respecto del spam, que se ejecute con un lanzador, aunque de momento no lo hemos apuntado en el TODO. Lo trataremos en futuras reuiniones. Todos sabemos que estas funciones "broma" son al final las que más uso y éxito tienen, así que de seguro que alguna implementamos.
Finalmente con todas las correcciones y comentarios hechos, actualizamos el TODO y algunos trozos del bot, incluyendo un pequeño easteregg en honor a Raspito!...
Cerramos la reuinión sin determinar una futura. Conforme avancemos en el código y tengamos nuevos avances haremos pública la próxima reunión, seguramente antes del viernes... Lo comunicaremos en este hilo y, por supuesto, en el grupo.
[Reunión virtual 29/06/2017]
Hacemos un repaso de todas las novedades y funciones implementadas en el bot.
-> El bot ya nos da las reglas, las que habíamos previsto en la última reunión
-> El bot da la bienvenida a los nuevos miembros y les invita a iniciar una conversación con el bot
-> Ya tenemos implementado el sistema de tags (aquí volveré más tarde). Estos tags son configurables por unos miembros especiales llamados "editores/admins"
->El bot envía la ayuda, y por defecto lo hace al privado. Si no pudiera, manda un mensaje al grupo indicando al usuario que le abra un privado para recibir la ayuda
-> Tenemos funcionando el sistema antiflood de comandos y tags, lo que evita que tanto comandos como tags se ejecuten reiteradamente, sólo permitiendo la ejecución de cada uno de ellos en lapsos de 15 minutos
En principio la base de tags es la misma para todos los canales. Es decir, si este bot finalmente lo adoptan los admins de los otros grupos de la Raspito's Family, los tags serían compartidos. El antiflood sí sería específico de cada canal, por lo que si alguien ha ejecutado en este el tag #repo (como yo antes) no implica que no pueda salir también en otro...
Si los admins de otros grupos finalmente desean esta funcionalidad, deberíamos modificarla y adaptarla a múltiples canales. De momento no voy a hacer ese esfuerzo, ya que creo más conveniente dar otras funcionalidades que sí vamos a usar, a programar esta que igual no se usa nunca...
Todos estamos de acuerdo en estas premisas, por lo que seguimos avanzando en dotar al bot con nuevas funciones. La que más desea la gente es un sistema de antiflood, y se ha adoptado la siguiente postura:
-> Si un usuario manda más de 4 mensajes en 10 segundos:
1º) Advertencia
2º) Borrado de mensajes
3º) Kick/Ban
Se actualiza el repo con el TODO reflejando estos cambios. De momento no fijamos fecha para la próxima reunión, donde si todo va bien, podremos probar este sistema antiflood... Estad atentos!
[Reunión virtual 05/07/2017]
Jugueteamos con el nuevo sistema Antiflood. Parece que, de momento, la cosa convence. Está así establecido:
-> El sistema considerará flood a aquellos comportamientos que se ajusten a las siguientes características:
* Enviar más de 5 mensajes en menos de 40 segundos.
En caso de ser así, el sistema mandará un primer aviso, advirtiendo al autor del flood que ese comportamiento no está permitido. Si vuelve a insistir en el msimo, será castigado durante 5 minutos, durante los cuales, todos sus mensajes serán borrados. Si sigue insistiendo (tanto durante el tiempo de castigo como durante las 24 horas siguientes, este usuario será expulsado).
-> Las expulsiones son directas (no bans), el usuario podrá reingresar nuevamente, pero sólo en modo lectura. Si intenta escribir será vuelto a expulsar nuevamente. Todo esto será reportado por privado.
-> Los niveles de advertencias y baneos serán rebajados cada 24 horas. Es decir, si alguien recibió una advertencia y no vuelve a generar flood, a las 24 horas estará como si nunca hubiera sido advertido. Si alguien ha sido expulsado, a las 24 hora pasará a estar solamente advertido.
-> En un futuro próximo, en cuanto esté disponible la API 3.1, las expulsiones serán castigos de 2 días en modo lectura, sin poder escribir en el grupo.
Los bans completos (para gente que venga a hacer mal a mala fe), recaerán sobre los administradores, que recibirán mensajes conforme el sistema antiflood trabaje.
Entre otros temas, también comentamos lo siguiente:
-> Incluir un comando /ban que alerte a los administradores de un usuario díscolo en el grupo
-> Incluir un comando /admins que muestre la lista de administradores/moderadores del grupo
-> Que el mensaje de expulsión de un usuario sea reportado por privado, y no en el grupo como está ahora mismo (comentado en la sección anterior).
Por otro lado, hemos pensado el iniciar un proyecto nuevo en el que todos puedan participar activamente en las pruebas de forma personal en casa. Para ello podemos incluir algún tipo de hardware (sensores, pantallas me matriz de puntos, etc.). Para ello, abriremos un tiempo de aportar ideas, y luego votaremos a la que más interese a la gente. Posiblemente hagamos una reunión el finde para tratar este tema. Quizá el domingo después de comer sería un buen día... Lo anunciaremos aquí y en el grupo.
-> Instalación del framework PTB (PythonTelegramBot):
Entramos en nuestra raspi y ejecutamos:[/color]
=====================================================================================
PRÓXIMA REUNIÓN VIRTUAL
Jueves 13 de julio a las 22 horas
Hablaremos sobre posibles futuros proyectos. Así que si tienes un proyecto en mente, no dudes en acudir...
Entre posibles ideas, un riego automático, una centralita de alarma, una estación meteorológica, etc.
NO FALTES!!!!
=> Si alguien quiere usarlo con su propia pi, necesitará dar de alta un bot en BotFather. Si alguno tiene dudas sobre esto, lo resolveremos en el grupo y/o en este mismo hilo.
HASTA PRONTO!!!
https://t.me/Raspython
Pues bien, nuestro primer proyecto será crear un Bot moderador que realice tareas automáticas para el mantenimiento del grupo.
En estos primeros mensajes se irán recopilando, a modo de diario, lo que se vaya decidiendo y haciendo en las jornadas de debate y desarrollo, así como las horas aproximadas de reuniones virtuales.
El código del bot será público y se irá colgando en el siguiente github:
https://github.com/cpasoft/Raspython-Bot
Si alguien quiere ser colaborador, no tiene más que pasarme por privado su cuenta de github.
Invitaros a todos a participar. Da igual el nivel que tengáis, seáis unos consumados programadores o no tengáis ni un básico conocimiento de este lenguaje de programación. La idea es aprender, compartir y divertirse...
UN SALUDO!!!!
Raspython Group!
[Reunión virtual 25/06/2017]
Hemos empezado a decidir las primeras funciones de nuestro futuro Bot. El Bot ya tiene nombre, muy original por cierto. Se llama RaspythonBot y ya es accesible, pero obviamente no dice nada, porque no tiene ni una sola línea de código.
Aún no tenemos avatar para el bot, así que buscamos diseñadores que se animen a crear uno chulo.
Hemos creado un TODO con nuestras primeras intenciones. Empezaremos con funciones básicas, y ya nos iremos complicando poco a poco... El TODO está en: https://github.com/cpasoft/Raspython-Bo ... r/TODO.txt
Por último, hemos decidido que programaremos el bot en python 3.40 (que viene de serie en Raspbian) y que usaremos el framework de PythonTelegramBot, cuya web es: https://python-telegram-bot.org/
[Reunión virtual 26/06/2017]
Entre todos decidimos las normas, y decidimos igualmente que estas quedarán estáticas en el propio código, ya que las normas a penas serán moficadas, por lo que no merece el esfuerzo extra de tenerlas en un fichero externo editable desde el propio bot.
Se comenta de poner separadores de secciones, para que se vea más claro el tránsito de una sección a otra.
De momento vamos a prescindir de crear una base de datos (PostgreSQL, MariaDB o similar), por lo que usaremos ficheros del tipo Json para almacenar las variables que requieran duración en tiempo, como por ejemplo la base de datos de hashtags, la de la reputación de usuarios y similares... Como no esperamos una cantidad exorbitada de datos, asumimos que rendirán bien. Intentaremos hacer las funciones de importación y exportación de datos lo más transparente posible por si, en un futuro, tenemos la necesidad de migrar a otros sistemas (base de datos).
El compañero Darth nodlehS nos provee de un documento de Victor Terrón muy interesante, y a la postre se postean un par de vídeos que los complementa. Muy interesantes de ver. Están en el grupo.
También hablamos de implementar algún tipo de meme/broma al respecto del spam, que se ejecute con un lanzador, aunque de momento no lo hemos apuntado en el TODO. Lo trataremos en futuras reuiniones. Todos sabemos que estas funciones "broma" son al final las que más uso y éxito tienen, así que de seguro que alguna implementamos.
Finalmente con todas las correcciones y comentarios hechos, actualizamos el TODO y algunos trozos del bot, incluyendo un pequeño easteregg en honor a Raspito!...
Cerramos la reuinión sin determinar una futura. Conforme avancemos en el código y tengamos nuevos avances haremos pública la próxima reunión, seguramente antes del viernes... Lo comunicaremos en este hilo y, por supuesto, en el grupo.
[Reunión virtual 29/06/2017]
Hacemos un repaso de todas las novedades y funciones implementadas en el bot.
-> El bot ya nos da las reglas, las que habíamos previsto en la última reunión
-> El bot da la bienvenida a los nuevos miembros y les invita a iniciar una conversación con el bot
-> Ya tenemos implementado el sistema de tags (aquí volveré más tarde). Estos tags son configurables por unos miembros especiales llamados "editores/admins"
->El bot envía la ayuda, y por defecto lo hace al privado. Si no pudiera, manda un mensaje al grupo indicando al usuario que le abra un privado para recibir la ayuda
-> Tenemos funcionando el sistema antiflood de comandos y tags, lo que evita que tanto comandos como tags se ejecuten reiteradamente, sólo permitiendo la ejecución de cada uno de ellos en lapsos de 15 minutos
En principio la base de tags es la misma para todos los canales. Es decir, si este bot finalmente lo adoptan los admins de los otros grupos de la Raspito's Family, los tags serían compartidos. El antiflood sí sería específico de cada canal, por lo que si alguien ha ejecutado en este el tag #repo (como yo antes) no implica que no pueda salir también en otro...
Si los admins de otros grupos finalmente desean esta funcionalidad, deberíamos modificarla y adaptarla a múltiples canales. De momento no voy a hacer ese esfuerzo, ya que creo más conveniente dar otras funcionalidades que sí vamos a usar, a programar esta que igual no se usa nunca...
Todos estamos de acuerdo en estas premisas, por lo que seguimos avanzando en dotar al bot con nuevas funciones. La que más desea la gente es un sistema de antiflood, y se ha adoptado la siguiente postura:
-> Si un usuario manda más de 4 mensajes en 10 segundos:
1º) Advertencia
2º) Borrado de mensajes
3º) Kick/Ban
Se actualiza el repo con el TODO reflejando estos cambios. De momento no fijamos fecha para la próxima reunión, donde si todo va bien, podremos probar este sistema antiflood... Estad atentos!
[Reunión virtual 05/07/2017]
Jugueteamos con el nuevo sistema Antiflood. Parece que, de momento, la cosa convence. Está así establecido:
-> El sistema considerará flood a aquellos comportamientos que se ajusten a las siguientes características:
* Enviar más de 5 mensajes en menos de 40 segundos.
En caso de ser así, el sistema mandará un primer aviso, advirtiendo al autor del flood que ese comportamiento no está permitido. Si vuelve a insistir en el msimo, será castigado durante 5 minutos, durante los cuales, todos sus mensajes serán borrados. Si sigue insistiendo (tanto durante el tiempo de castigo como durante las 24 horas siguientes, este usuario será expulsado).
-> Las expulsiones son directas (no bans), el usuario podrá reingresar nuevamente, pero sólo en modo lectura. Si intenta escribir será vuelto a expulsar nuevamente. Todo esto será reportado por privado.
-> Los niveles de advertencias y baneos serán rebajados cada 24 horas. Es decir, si alguien recibió una advertencia y no vuelve a generar flood, a las 24 horas estará como si nunca hubiera sido advertido. Si alguien ha sido expulsado, a las 24 hora pasará a estar solamente advertido.
-> En un futuro próximo, en cuanto esté disponible la API 3.1, las expulsiones serán castigos de 2 días en modo lectura, sin poder escribir en el grupo.
Los bans completos (para gente que venga a hacer mal a mala fe), recaerán sobre los administradores, que recibirán mensajes conforme el sistema antiflood trabaje.
Entre otros temas, también comentamos lo siguiente:
-> Incluir un comando /ban que alerte a los administradores de un usuario díscolo en el grupo
-> Incluir un comando /admins que muestre la lista de administradores/moderadores del grupo
-> Que el mensaje de expulsión de un usuario sea reportado por privado, y no en el grupo como está ahora mismo (comentado en la sección anterior).
Por otro lado, hemos pensado el iniciar un proyecto nuevo en el que todos puedan participar activamente en las pruebas de forma personal en casa. Para ello podemos incluir algún tipo de hardware (sensores, pantallas me matriz de puntos, etc.). Para ello, abriremos un tiempo de aportar ideas, y luego votaremos a la que más interese a la gente. Posiblemente hagamos una reunión el finde para tratar este tema. Quizá el domingo después de comer sería un buen día... Lo anunciaremos aquí y en el grupo.
-> Instalación del framework PTB (PythonTelegramBot):
Entramos en nuestra raspi y ejecutamos:
Código: Seleccionar todo
sudo python3 -m pip install python-telegram-bot
=====================================================================================
PRÓXIMA REUNIÓN VIRTUAL
Jueves 13 de julio a las 22 horas
Hablaremos sobre posibles futuros proyectos. Así que si tienes un proyecto en mente, no dudes en acudir...
Entre posibles ideas, un riego automático, una centralita de alarma, una estación meteorológica, etc.
NO FALTES!!!!
=> Si alguien quiere usarlo con su propia pi, necesitará dar de alta un bot en BotFather. Si alguno tiene dudas sobre esto, lo resolveremos en el grupo y/o en este mismo hilo.
HASTA PRONTO!!!