如何使用消息 ID (Pycord) 编辑嵌入

How to edit an embed using Message ID, (Pycord)

我正在尝试编辑另一个频道中的嵌入,例如规则频道...

uprules 命令是为了在不进行另一个嵌入的情况下向前一个嵌入添加一个字段。

我使用的是最新版本的 Pycord。 我试过的东西如下。

代码:

import discord
from discord.ext import commands

class Rules(commands.Cog):
    def __init__(self, client):
        self.client = client

        self.Rules = discord.Embed(
            title = "__**Test Embed Rules**__",
            description = """
Rules
            """
        )

    @commands.command()
    @commands.is_owner()
    async def rules(self, ctx):
        channel = self.client.get_channel(954750221261373471)

        await channel.send(embed=self.Rules)

    @commands.command()
    async def uprules(self, ctx, number, *, text):
        channel = self.client.get_channel(954750221261373471)
        msg = await channel.fetch_message(955501538766381066)

        Rules.add_field(
            name="||Test Embed||\n",
            value=f"```css\n[{number}] {text}\n```",
            inline=False
        )

        await msg.edit(embed=self.Rules)

def setup(client):
    client.add_cog(Rules(client))

错误:

Command raised an exception: AttributeError: type object 'Rules' has no attribute 'add_field'

我看过的内容:https://docs.pycord.dev/en/master/api.html?highlight=message%20id#discord.Message.id

这就是我试过的方法。我在想我可以使用消息 ID 编辑嵌入,但我不知道具体怎么做。感谢任何帮助。

谢谢。

我认为这种方法行不通。我以前从未见过它工作,也无法在文档中找到它的条目。

您需要通过 await 调用直接获取消息才能对其进行编辑。

像这样:

channel = self.client.get_channel(954750221261373471)
msg = await channel.fetch_message(5389540224354334)

而对于嵌入错误,您应该将变量移动到__init__函数中,以便在任何地方都可以使用它而不会阻塞。像这样:

def __init__(self, client):
   self.client = client

   self.Rules = discord.Embed(
    title = "__**Test Embed Rules**__",
    description = "")

之后,您可以使用变量 self.Rules 进行所需的嵌入。


来源