discord.py中如何让机器人编辑自己发送的消息?
错误原因
- 调用
edit()方法时参数传参方式错误:discord.py的消息编辑方法仅接受self作为唯一位置参数,新内容需要通过content关键字参数传入,直接传入字符串会触发参数数量不匹配的报错。 - 编辑的消息对象错误:代码中的
message是用户发送的触发指令的消息,你需要编辑的是机器人发送的消息,要先存储机器人发消息的返回对象。 - 阻塞问题:
time.sleep()是同步方法,会阻塞机器人整个事件循环,导致期间所有其他功能无法响应,异步场景下需使用asyncio.sleep()。
修复后的代码
# 头部先导入asyncio模块 import asyncio if message.content.startswith('(dev)messageedit'): # 存储机器人发送的消息实例 bot_sent_msg = await message.channel.send('old message') # 异步等待1秒 await asyncio.sleep(1) # 调用机器人消息的编辑方法,通过content关键字传新内容 await bot_sent_msg.edit(content='new message')
内容的提问来源于stack exchange,提问作者aster
相关产品推荐
相关产品推荐

