поэтому прямо сейчас я пытаюсь создать команду, которая позволяет пользователю изменять данные своего канала при встраивании. Единственная проблема, с которой я столкнулся, заключается в том, что мне нужно вручную указать номер поля для встраивания. Есть ли способ, которым бот просканирует всю вставку для определенного имени и вернет позицию полей? (у меня есть пример, связанный ниже)
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 >Пример вставки
Получите вставку в виде словаря, прокрутите каждое поле и, если это нужное вам поле, просто измените его значение. Затем преобразуйте dict в объект discord.Embed
и отредактируйте сообщение.
# 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)
Ссылка:
Сообщение помечено как отредактированное, но содержимое не изменилось.