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.

Enviar un objeto discord.ui.View de pycord a un canal específico.

Estoy tratando de enviar un objeto View a un canal específico.
He intentado esto:

@bot.event
async def on_ready():
    ch = bot.get_channel(927913185766436885)
    await ch.purge(limit=100)
    v = discord.ui.View()
    v.add_item(Vrb())
    await ch.send(view=v)

Hay un view en la sugerencia de ch.send, pero cuando pongo view=v en ch.send, aparece el siguiente error:

Traceback (most recent call last):
  File "C:\Users\CENSORED\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py", line 352, in _run_event
    await coro(*args, **kwargs)
  File "CENSORED", line 2344, in on_ready
    await ch.send(view=v)
  File "C:\Users\CENSORED\AppData\Local\Programs\Python\Python39\lib\site-packages\discord_components\dpy_overrides.py", line 350, in send_override
    return await send(channel, *args, **kwargs)
TypeError: send() got an unexpected keyword argument 'view'

¿Cómo puedo solucionar esto?

No quiero usar comandos de barra diagonal o cosas similares.

Edit: Estoy usando la versión py-cord-2.0.0a4739+g128a9e97.

Tags:  ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que el método send() no acepta el parámetro view. Esto podría deberse a la versión de discord.py o py-cord que estás utilizando.

    Una forma de resolver este problema es actualizar a la última versión de py-cord o discord.py. Sin embargo, si no quieres utilizar comandos de barra diagonal o cualquier otra alternativa, otra solución podría ser utilizar el método edit() del objeto de mensaje para agregar el objeto View después de que se haya enviado el mensaje.

    @bot.event
    async def on_ready():
        ch = _bot.get_channel(927913185766436885)
        await ch.purge(limit = 100)
        v = discord.ui.View()
        v.add_item(Vrb())
        message = await ch.send("¡Este es mi mensaje!")
        await message.edit(view=v)
    

    En este código actualizado, primero enviamos el mensaje con el método send() y obtenemos una referencia al objeto del mensaje. Luego, utilizamos el método edit() del objeto del mensaje para agregar el objeto View al mensaje. Este código debería funcionar sin problemas.

Comments are closed.