猿问

编辑已发送的嵌入机器人消息discord.py

我正在尝试编辑已发送的嵌入消息(用作角色反应消息)。例如:我输入“角色”并收到一条嵌入消息,该消息在响应时分配角色。我想编辑它以在描述中添加另一个角色,而不发送全新的消息。MEE6 机器人能够做到这一点,所以我确信这是可能的。我找到了应该可以工作的代码:


# This sends an embed message with a description of the roles.

@client.event

async def on_message(message):

    if message.channel.id == 700895165665247325:

        if message.content.startswith('roles'):

            embedvar = discord.Embed(title="React to this message to get your roles!",

                                     description="Click the corresponding emoji to receive your role.\n<:WarThunder:"

                                                 "745425772944162907> - War Thunder\n<:Apex:745425965764575312> - "

                                                 "Apex\n<:ModernWarfare:757104623738814554> - "

                                                 "Modern Warfare\n<:Minecraft:757029546632413346> - "

                                                 "Minecraft\n<:R6Siege:757030019909550122> - R6 Siege", color=0x00ff00)

            embedvar2 = discord.Embed(title="React to this message to get your roles!",

                                      description="Click the corresponding emoji to receive your role.\n<:WarThunder:"

                                                  "745425772944162907> - War Thunder\n<:Apex:745425965764575312> - "

                                                  "Apex\n<:ModernWarfare:757104623738814554> - "

                                                  "Modern Warfare\n<:Minecraft:757029546632413346> - "

                                                  "Minecraft\n<:R6Siege:757030019909550122> - R6 Siege\n"


但它给了我这个错误:


discord.errors.Forbidden: 403 Forbidden (error code: 50005): Cannot edit a message authored by another user

是的,机器人拥有所有正确的权限,并且在层次结构中分配的级别低于它。


一只萌萌小番薯
浏览 104回答 2
2回答

慕码人8056858

这是工作代码:# This sends an embed message with a description of the roles.@client.eventasync def on_message(message):&nbsp; &nbsp; if message.channel.id == 700895165665247325:&nbsp; &nbsp; &nbsp; &nbsp; if message.content.startswith('roles'):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; embedvar = discord.Embed(title="React to this message to get your roles!",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;description="Click the corresponding emoji to receive your role.\n<:WarThunder:"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"745425772944162907> - War Thunder\n<:Apex:745425965764575312> - "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"Apex\n<:ModernWarfare:757104623738814554> - "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"Modern Warfare\n<:Minecraft:757029546632413346> - "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;"Minecraft\n<:R6Siege:757030019909550122> - R6 Siege", color=0x00ff00)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; await message.channel.send(embed=embedvar)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print("Changed message embed color.")&nbsp; &nbsp; &nbsp; &nbsp; elif message.content.startswith('update'):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; embedvar2 = discord.Embed(title="React to this message to get your roles!",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; description="Click the corresponding emoji to receive your role.\n<:WarThunder:"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "745425772944162907> - War Thunder\n<:Apex:745425965764575312> - "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "Apex\n<:ModernWarfare:757104623738814554> - "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "Modern Warfare\n<:Minecraft:757029546632413346> - "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "Minecraft\n<:R6Siege:757030019909550122> - R6 Siege\n"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "<:AmongUs:760192601625591859> - Among Us", color=0x00ff00)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; channel = client.get_channel(700895165665247325)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; msg = await channel.fetch_message(757114312413151272)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; await msg.edit(embed=embedvar2)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print("Updated role reaction message.")&nbsp; &nbsp; else:&nbsp; &nbsp; &nbsp; &nbsp; return我只需在正确的频道中输入“更新”,其中的内容embedvar2就是消息更新的内容。

慕姐8265434

您正在尝试编辑message事件传递的内容,请尝试:msg&nbsp;=&nbsp;await&nbsp;message.channel.send(embed=embedvar) await&nbsp;msg.edit(embed=embedvar2)
随时随地看视频慕课网APP

相关分类

Python
我要回答