私は最初の Python Discord ボットに取り組んでおり、かなりまともなものになっていることがわかりましたが、特定の応答には埋め込みを使用したいと考えていました。その 1 つは、多くの埋め込みを使用するボットのすべての機能を送信することです。私は Javascript や JSON についての経験がないので、Web サイト「https://discohook.org/」を使用しました。 GUI ベースなので埋め込みを作成します。しかし、その結果、JSON ファイルしか取得できず、JSON ファイルをロードして埋め込みとして送信する方法が見つかりませんでした。
JSON ファイルは次のようになります -
{
"content": "Bot Name",
"embeds": [
{
"description": "This command lists all the possible commands which can be used to interact with the bot.",
"author": {
"name": "Help",
"icon_url": "http://4.bp.blogspot.com/-wuUbc-OPOt4/T3ioPh2pAAI/AAAAAAAAAdM/BFFvS5fxVMY/w1200-h630-p-k-no-nu/Questionmark.jpg"
}
},
{
"description": "Bot blesses you. ",
"author": {
"name": "Bless ",
"icon_url": "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fwallpapercave.com%2Fwp%2Fwp4775695.jpg&f=1&nofb=1"
}
},
{
"description": "Set status as idle",
"color": 16777215,
"author": {
"name": "Go Sleep",
"icon_url": "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fmedia.forgecdn.net%2Favatars%2F170%2F652%2F636723641550179947.png&f=1&nofb=1"
}
}
]
------------------------
おそらく、個々の変数をロードすることもできます。
with open(“JSON_FILE.txt”) as json_file:
data = json.load(json_file)
data = data[“embeds”]
その後、特定の辞書を取得する何らかの方法が得られます。
for embed in data:
pass
次に、使用する辞書としてデータを定義するだけです。
embed = discord.Embed(description = data[“description”])
embed.set_author(name = data[“author”][“name”], icon_url = data[“author”][“icon_url”]
2020 年 9 月 4 日 20:09 に回答
スターバックバリスタ
スターバックバリスタ
1,298
1
金バッジ 1 個
9
銀バッジ 9 個
20
銅バッジ 20 個
2
embed.add_author を試しましたが、エラーが発生しました - AttributeError: 'Embed'オブジェクトには属性「add_author」がありません。
– ハムスターに水をかける
2020 年 9 月 4 日 20:32
ドキュメントをもう一度調べて、「set_author」を見つけました。そしてその属性は機能します。助けてくれてありがとう。
– ハムスターに水をかける
2020 年 9 月 4 日 20:36
------------------------
長い時間が経ったかもしれませんが、私はまったく同じ問題を抱えており、独自の解決策を見つけました。それは次のとおりです:
from json import loads
from discord import Embed
# Just for our convinience let's make a function
def parse_embed_json(json_file):
embeds_json = loads(json_file)['embeds']
for embed_json in embeds_json:
embed = Embed().from_dict(embed_json)
yield embed
# And the main code looks like this
with open("bot/embeds/temp_ban_embeds.json", "r") as file:
temp_ban_embeds = parse_embed_json(file.read())
for embed in temp_ban_embeds:
await ctx.send(embed=embed)
そこで、特別なメソッド from_dict を見つけました。そして、それは json.loads メソッドから取得できる辞書で動作するようです。ここでドキュメントを見つけることができます。