【问题标题】:How to delete message using buttons in discord.py?如何使用 discord.py 中的按钮删除消息?
【发布时间】:2021-09-02 07:01:12
【问题描述】:

这是我第一次在 discord.py 中使用buttons

我希望嵌入在有人单击删除按钮时自行删除。这是我的代码,但有一些问题。

  • 任何人都可以通过单击按钮删除消息。我只希望运行命令的用户与按钮进行交互。

  • 当我点击删除按钮时,它会自动删除机器人之前发送的所有消息。

msg = await ctx.channel.send(embed=embed,components = [Button(label = "Delete", style=ButtonStyle.red)])
          interaction = await bot.wait_for("button_click")
          if interaction.component.label.startswith("Delete"):
            await msg.delete()

【问题讨论】:

    标签: discord.py


    【解决方案1】:

    我不熟悉这个组件,但你可以添加一个 if 语句来检查作者 id == 按下所述按钮的用户 id,

    【讨论】:

      【解决方案2】:
      msg = await ctx.send(embed = embed,components=[[copy,delete]])
       #Copy and delete are buttons
      
      def check(res):
            return ctx.author == res.user and res.channel == ctx.channel and msg == res.message
      
      while True:
            res = await bot.wait_for("button_click",timeout=60, check=check)
               
            if res.component.label.startswith("Copy User Name"):
              await msg.edit(embed=embed_copy,components = [[back,delete]])
                  
            elif res.component.label.startswith("Back"):
              await msg.edit(embed=embed,components=[[copy,delete]])
                    
            elif res.component.label.startswith("Delete"):
              await msg.delete()
               
      

      正如 LeSauvage 所建议的,这个问题可以通过使用检查轻松解决!

      【讨论】:

        猜你喜欢
        • 2022-01-17
        • 2018-01-17
        • 2021-01-21
        • 1970-01-01
        • 2018-04-29
        • 2018-06-29
        • 1970-01-01
        • 2021-05-29
        • 1970-01-01
        相关资源
        最近更新 更多