Python如何编辑Bot旧消息

时间:2018-10-19 02:24:25

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

如何编辑带有消息ID的漫游器发送的旧消息。

示例:如果我在!ping命令下使用它,则回复Pong

@bot.command(pass_context=True)
async def ping(ctx):
    msg = "Pong {0.author.mention}".format(ctx.message)
    await bot.say(msg)

如果我想通过命令编辑该消息: 示例:如果我使用!editmessage MessageID命令询问是否需要替换什么消息,则如果我们键入PongPong,它将用Pong编辑旧消息PongPong

2 个答案:

答案 0 :(得分:2)

如果知道消息所在的频道,则可以使用get_message获取消息,然后使用wait_for_message获取新的消息文本。然后使用edit_message将消息更改为具有新文本。

@bot.command(pass_context=True)
async def editmessage(ctx, channel: discord.Channel, *, message_id):
    try:
        message = await bot.get_message(channel, message_id)
    except discord.NotFound as e:
        await bot.say("Could not find that message")
        raise e
    await bot.say("What would you like to change the message to?")
    new_text = await bot.wait_for_message(author=ctx.message.author, channel=ctx.message.channel)
    await bot.edit_message(message, new_text.content)

调用此命令类似于

!editmessage #general 5678

答案 1 :(得分:-3)

您是否阅读了Discord.py-rewrite文档?

消息类具有方法.edit(),请执行以下操作:

import asyncio # needed for sleep that won't block the bot, only for this example

...

@bot.command(pass_context=True)
async def ping(ctx):
    message = await bot.say(content="Ping") # send message, say() returns message sent
    await asyncio.sleep(1)                  # pause for this demo
    await message.edit(content="Pong")      # edit the previous message

您应该能够以相同的方式阅读文档,弄清楚如何通过ID获取消息,然后致电await message.edit(content="Something new here")