es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Telethon obteniendo entrada de mensaje.

Estoy creando un bot y necesito obtener una entrada de mensaje, pero no tengo idea de cómo hacerlo.

El chat debería verse así:

bot: enviar x

yo: x

bot: enviar y

yo: y

y guardarlo en un archivo csv.

Este es el código actual:

bot.on(events.CallbackQuery)
async def handler(event):
if event.data == b”1″:
await event.respond(“x”)
##código
await event.respond(“x”)
##código
await event.respond(“x”)

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener una entrada del mensaje, puedes usar el evento events.NewMessage. Aquí hay un código de ejemplo que debería funcionar para tu caso de uso:

    from telethon import events
    
    # tu código de bot aquí
    
    # crear un diccionario para contener las entradas del usuario
    inputs_usuario = {}
    
    @bot.on(events.NewMessage(pattern=r'send (.*)'))
    async def manejar_entrada(event):
        texto_entrada = event.pattern_match.group(1)
        id_usuario = event.from_id
    
        # guardar la entrada del usuario en el diccionario
        inputs_usuario[id_usuario] = texto_entrada
    
        # responder con un mensaje de confirmación
        await event.respond(f"Guardé \"{texto_entrada}\" como tu entrada.")
    
    # código para guardar las entradas de los usuarios en un archivo CSV
    # ...
    
    

    Explicación del código:

    • El argumento pattern=r'send (.*)' en events.NewMessage coincide con cualquier mensaje que comience con “send” seguido de un espacio y algún texto. El (.*) captura el texto de la entrada como un grupo.
    • Dentro de la función manejar_entrada, extraemos el texto de la entrada de la coincidencia del patrón y el ID de usuario del evento. Luego guardamos la entrada del usuario en el diccionario inputs_usuario utilizando el ID de usuario como clave.
    • Finalmente, respondemos al usuario con un mensaje que confirma que su entrada ha sido guardada.

    Para guardar las entradas de los usuarios en un archivo CSV, puedes agregar un código al final que escriba el diccionario inputs_usuario en un archivo CSV:

    import csv
    
    with open('inputs_usuario.csv', 'w', newline='') as csvfile:
        fieldnames = ['id_usuario', 'entrada']
        escritor = csv.DictWriter(csvfile, fieldnames=fieldnames)
    
        escritor.writeheader()
    
        for id_usuario, texto_entrada in inputs_usuario.items():
            escritor.writerow({'id_usuario': id_usuario, 'entrada': texto_entrada})
    

    Este código abre un nuevo archivo llamado “inputs_usuario.csv” y escribe el ID de usuario y el texto de entrada para cada usuario en el diccionario inputs_usuario en el archivo. La clase DictWriter del módulo csv se utiliza para escribir cada fila como un diccionario con claves 'id_usuario' y 'entrada'. Antes de escribir las filas, escribimos la fila de encabezado con los nombres de campo 'id_usuario' y 'entrada'.

Comments are closed.