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.

str no es invocable en discord.py.

Estoy tratando de construir un bot que pueda enviar y almacenar adjuntos. En este momento, tengo esto. Pero dice ‘str’ no es llamable.

async def submit(message):
    attachment = Message.attachments
    if Message.attachments:
        with open('submit.txt', 'a') as file:
            file.write(f"{str(message.author.id)(message)(attachment.url)}\n")
            if message == None:
                file.writelines(f"{str(message.author.id)(message)(attachment.url)}\n")
        if message.attachment == None:
            await message.channel.send("Por favor adjunta un archivo")
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Hay algunos problemas con el código proporcionado arriba:

    1. En la primera línea, el parámetro se llama message, pero más adelante se hace referencia a él como Message. Estos deben ser consistentes.
    2. En la declaración if, Message.attachments debería ser message.attachments.

    3. En la cuarta línea (file.write), se debe cambiar str(message.author.id)(message)(attachment.url). Parece que la intención aquí es concatenar el ID del autor, el texto del mensaje y la URL del adjunto. Sin embargo, esto no se puede hacer en Python de esta manera. En su lugar, puedes usar interpolación de cadenas o concatenación:

    • Interpolación: f"{message.author.id} {message.content} {attachment.url}\n"
    • Concatenación: str(message.author.id) + " " + message.content + " " + attachment.url + "\n"
    1. En el bloque if message == None, la condición debería ser if attachment == None en su lugar.

    Aquí está el código corregido:

    async def submit(message):
        attachment = message.attachments
        if attachment:
            with open('submit.txt', 'a') as file:
                file.write(f"{message.author.id} {message.content} {attachment.url}\n")
            if not attachment:
                await message.channel.send("Por favor adjunta un archivo")
    

Comments are closed.