首页 > 解决方案 > Discord.py - 扫描所有嵌入字段以查找特定短语

问题描述

所以现在我正在尝试创建一个命令,该命令允许用户在嵌入时修改其频道的详细信息。我在这里遇到的唯一问题是我需要手动指定嵌入字段所在的数字。机器人有没有办法扫描整个嵌入以查找特定名称并返回字段位置?(我有一个下面链接的例子)

message = guild.get_message(63861098570842132)
embed = next(embed for embed in message.embeds)
embed.fields[0].value = "New value" #Issue Here
await message.edit(embed=embed)

https://gyazo.com/967101d666e78dcccef945f3c5d6e280 >嵌入示例

标签: pythondiscord.py

解决方案


以字典的形式嵌入,遍历每个字段,如果它是您想要的字段,只需更改它的值。然后将 dict 转换为discord.Embedobj 并编辑消息

# This is the user input
user_input = {'field name': 'some name', 'field value': 'some value'}

# Getting the embed and converting it to a dict
embed = message.embeds[0]
embed_dict = embed.to_dict()

for field in embed_dict['fields']:
    if field['name'] == user_input['field name']:
        field['value'] = user_input['field value']

# Converting the embed to a `discord.Embed` obj
edited_embed = discord.Embed.from_dict(embed_dict)

# Editing the message
await message.edit(embed=edited_embed)

参考:


推荐阅读