Bot para el chat del JáquerEspeis

En el chat del JáquerEspeis hace años pusimos un bot llamado El Jaqueado, escrito con Hubot. Hacía algunas cosas, como llevar la cuenta de hidrantes mapeados, hacer tweets y retweets, y algunas otras cosas más. El código está aquí:

Hubot al final no me gustó, entonces hace unos meses hablamos con @elotrojames para reescribirlo usando errbot.

Así nació Otro El Jaqueado, nuestro nuevo bot. Está ejecutando en una servidora de James, y lo administramos él y yo.

Por ahora tiene un plugin para twitter que escribió @elotrojames:

Y un plugin de hospitalidad copiado del bot Derbyshire del CLiC, que escribí yo y que vamos a usar para que quienes están en el club de la programación practiquen python:

1 me gusta

Hay un framework para desarrollar bots, se llama rasa https://rasa.com/

podríamos unificar eljaqueado en rasa y que se conecte a los diferentes métodos de comunicación

1 me gusta

Hola @cuyeo, escribo por aca.


Se supone que tengo el errbot corriendo, segun yo agregue la regla al archivo .py
Pero cuando llegue a instalar venv para pruebas me perdi: python3 -m venv …/.venv-err-derbyshire
La documentacion dice: python -m venv c:\path\to\myenv
Y el plugin se instalo en errbot\data\plugins\jaquerespeis\err-derbyshire\tests
Entonces cual es la path donde debo crear el venv?

1 me gusta

¡La regla se ve bien! Gracias @yosli13.

Todo esto sería más fácil si estuvieras usando Ubuntu :wink: Pero tratemos. Mi idea al hacer el plugin fue que para ejecutar las pruebas no se necesite errbot corriendo. Entonces te paso aquí instrucciones más detalladas para desarrollar y probar el plugin sin errbot.

(vas a tener que traducirlas a windows, porque no se cómo funciona eso)

# Hacer un directorio de workspace.
mkdir -p ~/workspace/jaquerespeis
# Entrar a ese directorio.
cd ~/workspace/jaquerespeis
# Clonar el repositorio.
git clone https://gitlab.com/jaquerespeis/err-derbyshire
# Entrar al directorio del repositorio.
cd err-derbyshire
# Instalar venv.
sudo apt install python3-venv
# Hacer un virtual environment
python3 -m venv ../.venv-err-derbyshire
# Activar ese venv
source ../.venv-err-derbyshire/bin/activate
# Instalar las dependencias de desarrollo
pip install errbot testscenarios pytest
# Ejecutar las pruebas, y verificar que todas pasan.
python3 -m unittest discover tests/
# Hacer un branch nuevo.
git checkout -b regla-me-abren
# Agregar una prueba nueva en tests/test_derbyshire.py
[...]
# Ejecutar las pruebas, y verificar que todas pasan, menos la nueva.
python3 -m unittest discover tests/
# Agregar la regla en derbyshire.py
[...]
# Ejecutar las pruebas, y verificar que todas pasan.
python3 -m unittest discover tests/
# Agregar los cambios al branch
git add tests/test_derbyshire.py derbyshire.py
# Hacer commit de los cambios
git commit -m "Agregué una regla para abrir la puerta"
# Hacer push de los cambios
git push --set-upstream origin regla-me-abren
# Ir a gitlab y hacer un merge request
[...]

Es un poco tarde y no he probado esto, entonces podrían haber errores o que falten algunos pasos. Decime si tenés dudas con alguno, o si te quedás pegada.

@elotrojames otroeljaqueado está caído. ¿podés revisarlo porfa cuando tengás un rato?

@elotrojames otroeljaqueado está caído. ¿podés revisarlo porfa cuando tengás un rato?

Gracias por el aviso. Estaba desconectada la raspi… :thinking: un dundecillo ( :dog: ) anduvo por ahí. Ya está arriba otra vez el otroeljaqueado.

1 me gusta

Hola!
Estaba revisando los repos y tengo estas consultas:

  1. Veo que los repos no tienen issues ni listas de cosas por hacer, entonces existe alguna funcionalidad que tengan en mente, bugs, test cases o algún otro regexp al que quieran agregar una respuesta?
  2. El bot original estaba siendo hosteado en Heroku (segun deduje del script que está en el root). El bot actual se seguirá hosteando en la pi, o tienen pensado migrarlo? Heroku que yo sepa tiene el tema de que cuando es gratis, se duerme luego de inactividad, tonses la respuesta de los bots pueden no ser instantáneos.
  3. Qué tan util ven en agregar pipelines para pruebas automáticas, generar builds, hacer deploy, etc?
  4. Qué tan util será montar un contenedor para el bot - minimo para localdev? Así la gente que quiera contribuir podría correr el proyecto con un comando y Docker. (ya luego se podría pensar en otros casos de uso).
  5. Qué tal la idea de agregar templates para pull requests? y además agregar lineamientos para la contribución.
1 me gusta

Hola @zyoruk,

Aún no hay lista de tareas. Lo primero es que ejecutés las pruebas, y luego que te inventés una regla. Algo como que cuando alguien diga «zyoruk» el bot responda: «Lo conocí, un buen jáquer el carajo. Que dios lo tenga en su santa gloria» :smiley: lo que sea que se te ocurra.

Luego ya podemos empezar a pensar en tareas para mejorarlo. Todo lo que proponés suena rebien, mientras lo documentés muy bien para que otr+s aprendan también.

De la servidora raspi para el bot, yo no tengo problemas para que se quede ahí. Pero @elotrojames es el que dice.

1 me gusta

@yosli13, ¿vos todavía estás interesada en jugar con esto?

Si querés nos juntamos un rato para ver por dónde quedaste y cómo seguir.

@cuyeo Envié una solicitud al repo para tener permisos de escritura.

No veo ninguna notificación. Pero igual lo que tenés que hacer es un fork y un pull request, no escribir directamente al repo. Si necesitás ayuda con esto avisame por dónde vas.

Ah! Bien, entonces estaré jugando con esto en estos días.

1 me gusta

De la servidora raspi para el bot, yo no tengo problemas para que se quede ahí. Pero @elotrojames es el que dice.

Yo no veo mal que movamos al bot a otra servidora raspi, a mi a veces se me olvida estar pendiente del servicio y a veces algún rufiancillo perruno me mueve los cables. Quizás alguien pueda darle una nueva servidora al bot y estar más al tanto.

Genial… Se sopone que estoy en la prueba.
Pero no se si el resultado es correcto o algo esta mal y no puedo identificarlo

Listo, ya hice el merge request.
Y dale me encantaría seguir, te parece la otra semana?

¡Qué bien! El log de las pruebas no está muy limpio, creo que eso es problema de errbot. Pero no veo ningún error en eso que pasaste.

Es mejor si mandás completo lo que imprimen las pruebas, y no como foto sino como texto pegándolo en un sitio de pastebin, como https://paste.ubuntu.com

Felicidades @yosli13 por tu primera contribución <3 Estoy taaaan orgulloso de vos y de el jaqueado.

@yosli13 ¿te queda alguna pregunta del proceso o las herramientas?

1 me gusta

Acá el log completo
https://paste.ubuntu.com/p/p775FMQSVg/

1 me gusta

ok. Mirá, el final es lo más importante:

Ran 25 tests in 1.222s

OK

Justo después de hacer pull ejecutamos las pruebas, y entonces imprime menos de 25: Ran {< 25} tests.
Después agregamos las pruebas sin agregar el código, para que nos diga que las pruebas fallaron. Luego con el código ejecutamos por tercera vez, y ya te sale ese mensaje con 25 ok.

Y eso es test-driven development.

@cuyeo He creado un Pull Request para agregar una regla a mensajes de bienvenida.