如何使用Hikari(lightbulb)实现Discord机器人编辑自身消息
Hikari(Lightbulb) 编辑自身已发送消息实现
你要的/ping指令流程可以直接通过框架上下文的响应方法实现,核心要点是第一次发送消息时必须保存返回的消息对象,后续直接调用该对象的编辑方法即可修改内容,无需额外查询消息ID。
完整实现代码
首先确保你已经安装了依赖:pip install hikari hikari-lightbulb
import asyncio import hikari import lightbulb # 初始化机器人实例,替换为你自己的机器人Token bot = lightbulb.BotApp( token="YOUR_BOT_TOKEN", slash_commands=True, ) @bot.command @lightbulb.command("ping", "消息编辑测试指令") @lightbulb.implements(lightbulb.SlashCommand) async def ping(ctx: lightbulb.SlashContext) -> None: # 发送初始回复,保存返回的消息对象供后续编辑 sent_msg = await ctx.respond("Pong!") # 等待1秒 await asyncio.sleep(1) # 编辑此前发送的消息,替换为最终内容 await sent_msg.edit("Ping?") if __name__ == "__main__": bot.run()
注意事项
- 调用
ctx.respond()后一定要接收返回值,没有这个消息对象就无法定位你要编辑的那条消息 - 如果你用了延迟响应(先调用
await ctx.defer())的场景,编辑初始响应可以直接用await ctx.edit_last_response("新内容"),不需要额外存消息对象 - 机器人默认拥有编辑自身发送消息的权限,不需要额外申请特殊权限,也无法编辑其他用户、其他主体发送的消息
内容的提问来源于stack exchange,提问作者PrivateSelensky
相关产品推荐
相关产品推荐

