python - 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)
解决方案
以字典的形式嵌入,遍历每个字段,如果它是您想要的字段,只需更改它的值。然后将 dict 转换为discord.Embed
obj 并编辑消息
# 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)
参考:
推荐阅读
- java - 如何在java中使用mysql函数计算列定义
- google-api - Youtube Data API v.3 中的订阅范围
- python - 将最新修改时间的 3 个文件读入 Pandas Dataframe
- javascript - 使用javascript在对象中搜索数组而不使用循环
- openssl - 如何生成两因素身份验证密钥库(.p12)以连接远程服务器
- ios - 在 Swift 中以编程方式将视图添加到 stackview
- delimiter - db中“endDelimiter:@”的用法是什么(在我的情况下是liquibase)
- javascript - React.js 从句子或段落中获取 Youtube 链接并将其转换为链接
- jquery - jQuery滚动到下一个文本出现
- java - 在 Maven 项目中查找 JUnit 5 测试