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.

El comando de Discord.py que elimina mensajes no funciona.

Estoy tratando de hacer un comando que borre el número de mensajes que quiero, pero no funciona.

Obtuve este error:

El objeto ‘coroutine’ no tiene el atributo ‘delete’.

if message.content.startswith("!נקה"):
    delete_count = 0
    try:
        value = message.content.split("!נקה ",1)[1] # obtiene el valor de los mensajes que quiero borrar
        value = int(value)
        flag = 1
    except:
        flag = 0
        msg = await message.channel.send("Olvidaste escribir cuántos mensajes quieres borrar.")
        await asyncio.sleep(5)
        await msg.delete()
    if flag == 1:
        for i in range(value-1):
            if True:
                with open("messagesList.txt", "r") as json_file:
                    messagesList = json.load(json_file) # carga una lista de los id de los mensajes
                message_id = messagesList[0]
                msg = message.channel.fetch_message(message_id)
                await msg.delete()
                delete_count += 1
                with open("messagesList.txt", "w") as json_file:
                    json.dump(messagesList, json_file)
            else:
                print("", end = "")
        if delete_count != 0:
            message = await message.channel.send(f"{delete_count} mensajes se han eliminado satisfactoriamente.") # muestra los mensajes eliminados correctamente
        await asyncio.sleep(3) # espera 3 segundos
        await message.delete()
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “‘coroutine’ object has no attribute ‘delete'” sugiere que hay un problema con la variable msg en el código, específicamente que es un objeto coroutine y no un objeto de mensaje.

    Para solucionar esto, reemplace la línea msg = message.channel.fetch_message(message_id) con msg = await message.channel.fetch_message(message_id) para asegurarse de que la variable msg esté esperando los resultados de la coroutine fetch_message() antes de intentar llamar al método delete() en ella.

Comments are closed.