В каком виде и где хранить embed сообщения?

Рейтинг: 0Ответов: 1Опубликовано: 11.06.2023

У меня embed сообщения хранятся в коде в следующем виде:

emb = disnake.Embed(description = '```hello world!```', colour = disnake.Color.blue()

хочу узнать лучший способ хранения embed сообщений вне кода и пример их вызова из какого либо файла. Были идеи делать это в config.ini или просто txt но вызов в коде у меня получался довольно громоздким.

Ответы

▲ 1Принят

У всех объектов типа discord.Embed есть метод to_dict(), который преобразует класс в словарь. А полученный словарь можно затем преобразовать в JSON и сохранить в файл.

Пример:

embed = discord.Embed(title='Заголовок', description='Описание', color=discord.Color.gold())
embed.add_field(name='Поле 1', value='Значение 1', inline=False)
embed.add_field(name='Поле 2', value='Значение 2', inline=True)

embed_data = embed.to_dict()
print(json.dumps(embed_data, indent=4, ensure_ascii=False))

Вывод:

{
    "fields": [
        {
            "name": "Поле 1",
            "value": "Значение 1",
            "inline": false
        },
        {
            "name": "Поле 2",
            "value": "Значение 2",
            "inline": true
        }
    ],
    "color": 15844367,
    "type": "rich",
    "description": "Описание",
    "title": "Заголовок"
}

И точно также обратно из словаря можно получить embed, при помощи метода класса discord.Embed.from_dict():

embed = discord.Embed.from_dict(embed_data)