用discord.py编辑消息

我想让我的机器人编辑消息,但我得到一个错误信息

@client.command()
async def edit(ctx):
    message = await ctx.send('testing')
    time.sleep(0.3)
    message.edit(content='v2')

错误。

 RuntimeWarning: coroutine 'Message.edit' was never awaited
  message.edit(content='v2')
RuntimeWarning: Enable tracemalloc to get the object allocation traceback

顺便问一下,有什么方法可以通过ID来编辑消息吗?

解决方案:

time.sleep() 是一个阻塞调用,这意味着它几乎把你的脚本搞砸了。你需要使用的是 await asyncio.sleep().

还有: edit() 是一个coroutine,所以它需要被等待。这里是你的命令应该是什么样子的。

import asyncio # if you haven't already

@client.command()
async def edit(ctx):
    message = await ctx.send('testing')
    await asyncio.sleep(0.3)
    await message.edit(content='v2')

要想通过ID来编辑一条消息,你需要它来自哪个频道。

@client.command()
async def edit(ctx, msg_id: int = None, channel: discord.TextChannel = None):
    if not msg_id:
        channel = client.get_channel(112233445566778899) # the message's channel
        msg_id = 998877665544332211 # the message's id
    elif not channel:
        channel = ctx.channel
    msg = await channel.fetch_message(msg_id)
    await msg.edit(content="Some content!")

这个命令的用法是 !edit 112233445566778899 #message-channel-origin 假设前缀是 !如果消息在你执行命令的通道中,就不要使用通道参数。


参考文献:

给TA打赏
共{{data.count}}人
人已打赏
未分类

django模型引用,在引用中加入更多的反义词。

2022-11-13 21:05:19

未分类

KotlinJava:这个单子对象应该有这些子方法来检查吗?

2022-11-13 21:05:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索