如何使用nextcord python在回调函数中调用函数

j5fpnvbx  于 2023-01-16  发布在  Python
关注(0)|答案(1)|浏览(148)
@bot.slash_command(guild_ids=[1061756784567656448])
async def oui(ctx):
    button = Button(label="A + 1", style=ButtonStyle.blurple)
    myview = View(timeout=180)
    myview.add_item(button)
    
    
    async def aurevoir(ctx):
        await ctx.send_message("aurevoir")
        
    
    async def bonjour(interaction: discord.Interaction):
        await interaction.response.send_message("bonjour")
        await aurevoir(ctx)
        
    button = Button(label="A + 1", style=ButtonStyle.blurple)
    myview = View(timeout=180)
    myview.add_item(button)
        
    
    button.callback = bonjour
    await ctx.send(f"hello",view= myview)

函数“aurevoir”从来不发送消息,我得到了很多错误,如“Context”对象没有属性“send_message”。我不知道如何修复它。

x0fgdtte

x0fgdtte1#

问题是您传递了ctx对象-最好使用bonjour在您按下按钮时获得的交互对象,并使用交互上的followup属性发送消息。

async def oui(ctx: discord.ApplicationContext):
    await ctx.defer()
    button = Button(label="A + 1", style=ButtonStyle.blurple)
    myview = View(timeout=180)
    myview.add_item(button)
    
    async def aurevoir(interaction: discord.Interaction):
        await interaction.followup.send("aurevoir")
        
    async def bonjour(interaction: discord.Interaction):
        await interaction.response.send_message("bonjour")
        await aurevoir(interaction)
        
    button = Button(label="A + 1", style=ButtonStyle.blurple)
    myview = View(timeout=180)
    myview.add_item(button)
        
    button.callback = bonjour
    await ctx.followup.send("hello", view=myview)

我还添加了一个ctx.defer和一个ctx.followup.send

相关问题