当前位置: 首页 > 知识库问答 >
问题:

如何在discord.py?中复制嵌入

勾炜
2023-03-14

我希望bot获取消息(嵌入)并将其发送到调用命令的通道。以下代码适用于普通文本消息:

@bot.command()
async def fetch(ctx):
    channel = bot.get_channel(736984092368830468)
    msg = await channel.fetch_message(752779298439430164)
    await ctx.send(msg.content)

为了发送嵌入,我尝试了:

@bot.command()
async def fetch(ctx):
    channel = bot.get_channel(736984092368830468)
    msg = await channel.fetch_message(752779298439430164)
    await ctx.send(msg.embeds.copy())

它发送此信息,而不是发送嵌入:

如何使机器人复制并发送嵌入?

共有2个答案

吕鸿轩
2023-03-14

您必须像这样选择第一个嵌入,如果要在再次发送之前更改为它,请使用[copy]。(https://discordpy.readthedocs.io/en/latest/api.html?highlight=embed#discord.Embed.copy)

@bot.command()
async def fetch(ctx):
    channel = bot.get_channel(736984092368830468)
    msg = await channel.fetch_message(752779298439430164)
    await ctx.send(embed=msg.embeds[0])
诸腾
2023-03-14

问题是你试图发送一个不和谐的列表。将对象作为字符串嵌入到您的waitctx.send(msg.embeds.copy())
ctx.send()方法有一个名为embed的参数,以便在消息中发送嵌入...

await ctx.send(embed=msg.embeds[0])

我们应该做到这一点。这样你就发出了真正的不和谐。嵌入对象,而不是不一致列表。嵌入

你应该不需要. Copp()方法

await ctx.send(embed=msg.embeds[0].copy())

虽然你可以利用它

使用索引运算符[0]的唯一缺点是您只能访问消息中包含的一个嵌入。不和谐API不提供在单个消息中发送多个嵌入的方法。(见此问题)。

解决方法可以是迭代msg中的每个嵌入。嵌入列出并为每个嵌入发送消息。

for embed in msg.embeds:
    await ctx.send(embed=embed)

不幸的是,这会导致bot发送多条消息,但您并没有真正注意到。

 类似资料:
  • 本文向大家介绍Python中如何复制一个嵌套列表,包括了Python中如何复制一个嵌套列表的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将看到在Python中复制嵌套列表的不同方法。让我们一一看。 首先,我们将使用循环复制嵌套列表。这是最常见的方式。 示例 输出结果 如果运行上面的代码,则将得到以下结果。 让我们看看如何使用列表理解和拆包运算符复制嵌套列表。 示例 输出结果 如果运行上

  • 问题内容: 我想复制一个2D列表,以便如果我修改一个列表,则不修改另一个列表。 对于一维列表,我只是这样做: 现在,如果我修改了b,a就不会修改。 但这不适用于二维列表: 如果我修改了b,a也会被修改。 我该如何解决? 问题答案: 对于不管尺寸多少都可以工作的更通用的解决方案,请使用:

  • 问题内容: 我希望执行一组代码,直到用户明确想要退出该功能为止。例如:当用户运行程序时,他将看到2个选项: 再次运行 出口 这将通过使用开关盒结构来实现。如果用户按下1,则将执行与1相关的一组功能;如果用户按下2,则程序将退出。我应该如何在golang中实现这种情况?在Java中,我相信可以使用do while结构来完成此操作,但是go不支持do while循环。以下是我尝试过的代码,但是它陷入了

  • 问题内容: 我需要制作一个只能由具有特定角色的人执行的命令。我在google和youtube上搜索以找到答案,但一无所获 问题答案: 您可以在命令上添加装饰器,以将其限制为仅具有特定角色或权限的成员。它的文档在这里。它看起来像这样: 请记住,您传递的字符串区分大小写。

  • 机器人必须每隔60秒做一件事。我尝试使用create_task,但它不起作用(bot启动了,但什么也没发生)。如何实现这一点?

  • 问题内容: 我需要制作一个副本,`HashMap<Integer, List List List `原件中。 如果我正确理解,这两种方法只会创建浅拷贝,这不是我想要的: 我对吗? 除了遍历所有键和所有列表项并手动复制之外,还有更好的方法吗? 问题答案: 没错,浅表副本不能满足您的要求。它将具有原始地图中的副本,但这些副本将引用相同的对象,因此对from 的修改将出现在from的对应内容中。 在Ja