如何编辑带有消息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
答案 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")
。