簡體   English   中英

編輯已發送的嵌入機器人消息 discord.py

[英]Edit already sent embed bot message discord.py

我正在嘗試編輯已發送的嵌入消息(作為角色反應消息)。 例如:我輸入“角色”並收到一條嵌入消息,在響應時分配角色。 我想編輯它以在描述中添加另一個角色而不發送全新的消息。 MEE6 bot 能夠做到這一點,所以我相信這是可能的。 我找到了應該工作的代碼:

# 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"
                                                  "<:AmongUs:760192601625591859> - Among Us", color=0x00ff00)
            await message.channel.send(embed=embedvar)
            await message.edit(embed=embedvar2)
            print("Changed message embed color.")
    else:
        return

然而它給了我這個錯誤:

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

是的,機器人擁有所有正確的權限,並且在層次結構中分配的等級低於它。

您正在嘗試編輯事件傳遞的message ,請嘗試:

msg = await message.channel.send(embed=embedvar)
await msg.edit(embed=embedvar2)

這是工作代碼:

# 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)
            await message.channel.send(embed=embedvar)
            print("Changed message embed color.")
        elif message.content.startswith('update'):
            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"
                                                  "<:AmongUs:760192601625591859> - Among Us", color=0x00ff00)
            channel = client.get_channel(700895165665247325)
            msg = await channel.fetch_message(757114312413151272)
            await msg.edit(embed=embedvar2)
            print("Updated role reaction message.")
    else:
        return

我只需在正確的頻道中鍵入“更新”, embedvar2中的內容就是消息更新的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM