【问题标题】:How to delete the bot's previous message on discord.py如何删除机器人在 discord.py 上的上一条消息
【发布时间】:2020-08-28 10:49:12
【问题描述】:

我见过这个命令

@bot.command()
async def disappear(ctx):
    msg = await ctx.send("Hey!")
    await msg.delete(delay=1)

但是,我正在尝试删除其他功能中的“味精”。准确地说,这是我的代码

@bot.command()
async def disappear(ctx):
    msg = await ctx.send("Hey!")
    await msg.delete(delay=1)

@bot.command()
async def somethingelse(ctx):
    await msg.delete(delay=1)

这给了我一个错误

 NameError: name 'msg' is not defined

所以我想知道是否有任何方法可以让机器人本身删除机器人以前的消息。

【问题讨论】:

    标签: python python-3.x discord.py discord.py-rewrite


    【解决方案1】:

    你可以试试这个:

    prev_msg = None
    
    @bot.command()
    async def deleteprevmsg(ctx):
        global prev_msg
    
        try:
            await prev_msg.delete(delay = 1)
        except:
            prev_msg = await ctx.send("No previous message found")
    

    在每个await ctx.send() 之前加上prev_msg = 。请记住在每个使用它的函数中global prev_msg

    【讨论】:

      【解决方案2】:

      如果您不想使用全局变量,您可以获取机器人在该频道中发送的最后一条消息,然后将其删除。

      @client.command()
      async def somethingelse(ctx):
          channel = client.get_channel(123456789123456)  # ID of channel
          msg = await channel.history().get(author__id=123456789123456)  # ID of bot
          await msg.delete(delay=1)
          print(f"Deleted message: {msg.id}")
      

      channel.history()

      【讨论】:

      • 这个机器人将在多个服务器通道中使用。那么如何获取频道 ID?
      猜你喜欢
      • 2018-08-16
      • 1970-01-01
      • 2021-10-14
      • 1970-01-01
      • 2023-03-21
      • 2021-04-01
      • 2020-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多