Open dgarroDC opened 5 years ago
Comando /exinfoteca
Si buscan en el buscador de Telegram van a encontrar una gran cantidad de mensajes con el mismo contenido "Donde esta la ex-infoteca?" Propongo crear el comando"/exinfoteca" que devuelva una breve descripción de donde se encuentra, o mejor, una foto (hay algunas si buscan en el grupo de Computación).
No sería mas amplio y menos sucio un comando que sea /donde y que mas o menos intente buscar lo que se paresca al argumento?
Comando /exinfoteca Si buscan en el buscador de Telegram van a encontrar una gran cantidad de mensajes con el mismo contenido "Donde esta la ex-infoteca?" Propongo crear el comando"/exinfoteca" que devuelva una breve descripción de donde se encuentra, o mejor, una foto (hay algunas si buscan en el grupo de Computación).
No sería mas amplio y menos sucio un comando que sea /donde y que mas o menos intente buscar lo que se paresca al argumento?
Hay tantos lugares que la gente no suela encontrar? Si hay mas de dos o tres supongo que si, se podría hacer eso.
La idea del comando es mas que "Usuario1" pregunte "Che adonde esta la ex-infoteca?" y "Usuario2" que ya sabe del comando en vez de tener que explicarlo y/o buscar la foto simplemenet ponga "/donde exinfoteca" o el comando que sea y salga.
/donde
vacío puede retornar la lista de lugares que sabe encontrar.
/donde <lugar>
pregunta dónde queda.
/donde <lugar> <ubicación>
guarda en qué <ubicación>
queda <lugar>
.
Cierra? Seguramente el último comando requiera o bien que lo haga un admin o bien que pase por una autorización de admin. No sé bien si se puede hacer lo último.
El flujo sería así:
U
no sabe cómo preguntar por "infoteca".U
llama a /donde
.U
mira la respuesta y ve que el bot conoce "infoteca"
.U
sabe cómo preguntar por "infoteca". Llama /donde infoteca
."infoteca"
.Son varios pasos pero es exacto y creo que es bastante fácil.
Ver si hay un nombre más general para incluir teléfonos y todo eso.
Tal vez /lugares
.
Agrege un PR donde en vez de escribir un comando + lugar (que me parece muy error prone), muestra una lista de botones con los posibles lugares y al clickear un boton el bot manda el texto guardado con la locacion/telefono/lo que sea. (Para enviar el texto se usa la misma idea que para sugerir grupos etc sugerirdonde nombre lugar|texto).
@rozen03 @dsocolobsky @dgarroDC @Oppen diganme que opinan.
A futuro si queremos ser bien fifi podemos hacer que pase un contacto, no? El PR se ve bien para mí.
Está testeado? La botonera de donde que hace? No me queda claro que se haya programado comportamiento para los botones de donde
Verdad. Te habrás comido de commitear un archivo?
No, la respuesta está aca https://github.com/rozen03/dcubabot/pull/30/commits/32a0870d4fe19df0454ff9bede0bf420717d4f96#diff-f7290e35defc8eea5aab55a6478f6748R328
y los botones los genera con https://github.com/rozen03/dcubabot/commit/32a0870d4fe19df0454ff9bede0bf420717d4f96#diff-f7290e35defc8eea5aab55a6478f6748R420
La botonera lo unico que hace es escupir el texto en el chat donde se clickeo el boton.
A futuro si queremos ser bien fifi podemos hacer que pase un contacto, no? El PR se ve bien para mí.
Un contacto de tg o decis el texto de un telefono/mail? Lo segundo es posible ahora, lo primero ni idea como se haría para fwdear un contacto.
Disculpá me comi esa linea, perfecto entonces, me gusta. Falta ver si se puede hacer q se borre si se mandan sucesivos mensajes
Estuve viendo el tema de borrar mensajes, tendria que funcionar para cualquier canal? Si es asi hay que trackear todos los chats en donde usaron el comando /Donde, ya que si solo se guarda el ultimo msg id podes borrar el texto en otros canales, por ej alguien que se fijo por privado.
Tendría que revisarlo mejor quizás, pero no se borran ya los mensajes? Veo que los mensajes enviados los agregás en context.sent_messages
, así que ya debería manejarlo bien el https://github.com/rozen03/dcubabot/blob/master/deletablecommandhandler.py (que ya tiene en cuenta lo de los chats en donde se usa el comando).
Quien llama a eso? Por lo menos en lo que probé yo si spameas click a los botones no se borran los mensajes anteriores.
Ah tenés razón, estaba viendo el mensaje con la lista de botones en vez del mensaje que manda cuando los tocás. Así que ese handler no sé si nos va a servir, habrá que pensar otra cosa. 🤔
Pero se puede reusar o hay que implementarlo de 0? Habría que trackear en la db todos los chats en los que se uso el comando y limpiar la db constantemente.
A ver, lo que se me ocurre es que podríamos extraer esto a una función que este fuera del DeletableCommandHandler
y la puedas llamar desde acá. La función tomaría 3 parámetros:
origen
: string que dice qué triggereó el mensaje nuevo (un comando, un botón o lo que fuese)chat_id
: en qué chat se mandó el mensaje (que también coincide con de qué chat salió el origen que lo triggereó)messages
: cuáles son los mensajes nuevos (algunos comandos podrían mandar más de un mensaje nuevo así que por eso es una lista)La función se encargaría de borrar los mensajes con el origen y chat especificado (por ejemplo, "respuestas al comando /estasvivo en el chat 1" o "respuestas al tocar un botón de /donde en el chat 2"), además de tener como responsabilidad guardar en la base los nuevos mensajes enviados para ese origen y chat para que sean borrados la próxima vez.
En el caso de DeletableCommandHandler
mandarías el nombre del comando como origen
(self.command[0]
), update.effective_chat.id
como chat_id
y context.sent_messages
como messages
.
En el caso de acá mandarías algo como /donde button reply
en origen
(o alguna otra cosa que quieras usar para identificarlo), message.chat_id
como chat_id
y para messages
una lista cuyo único elemento es el mensaje enviado.
Una sutileza es que origen
se correspondería con el campo command
de SentMessage
, con lo cual sería más prolijo renombrar ese campo a origen
también, te parece @rozen03? Si es muy complicado lo dejamos como command
y ya fue, tampoco es para tanto, igual tampoco me convence tanto el nombre origen
.
Con eso creo que estaría cubierto todo. También se me ocurren otras alternativas a no enviar un mensaje como respuesta a los botones, si es que te gusta más:
Comando /exinfoteca
Si buscan en el buscador de Telegram van a encontrar una gran cantidad de mensajes con el mismo contenido "Donde esta la ex-infoteca?" Propongo crear el comando"/exinfoteca" que devuelva una breve descripción de donde se encuentra, o mejor, una foto (hay algunas si buscan en el grupo de Computación).