繁体   English   中英

如何删除机器人在 discord.py 上的先前消息

[英]How to delete the bot's previous message on discord.py

我见过这个命令

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

但是,我正在尝试删除其他一些函数中的“msg”。 准确地说,这是我的代码

@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

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

你可以试试这个:

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

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

@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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM