Discord机器人meme命令无法为发送的嵌入消息添加反应问题求助
问题分析与解决方案
你遇到的问题很清晰——你的代码里创建了两条独立的回复消息,最后把反应加到了第二条空消息上,而非你期望的那条带meme嵌入的消息。
我来拆解下你的代码逻辑:
await ctx.reply(embed=meme):这一步已经成功发送了带嵌入的回复消息,但你没有把这条消息的对象保存下来。msg = await ctx.reply():这一步又额外发送了一条新的、空的回复消息,后续的加反应操作都作用在了这条空消息上,所以看起来嵌入消息没有反应。
修正后的代码
async def meme(ctx): content = get("https://meme-api.herokuapp.com/gimme").text data = json.loads(content) meme = discord.Embed(title=f"{data['title']}", color=discord.Color.random()).set_image(url=f"{data['url']}") # 直接保存发送嵌入消息的对象 msg = await ctx.reply(embed=meme) # 给这条带嵌入的消息添加反应 await msg.add_reaction(reaction1) await msg.add_reaction(reaction2)
关键改动说明
- 移除了多余的
await ctx.reply()调用,直接将发送嵌入消息的返回结果赋值给msg变量。 - 现在
msg指向的就是那条带meme嵌入的回复消息,后续的add_reaction操作会正确作用在它上面。
另外小提一句:Color = discord.Color.random()里的等号建议改成小写的color,更符合Python的PEP8编码规范,不过这不会影响功能运行~
内容的提问来源于stack exchange,提问作者scotttt-6969
相关产品推荐
相关产品推荐

