#大変お世話になったページ:Discord.jsでembed (埋め込みメッセージ) を扱う
いきなりですが、discord.jsについてしばらく説明続きます。わかっている方はこちら
環境
npm v6.14.4
node.js v12.18.0
discord.js v12.2.0
Discord.jsでローカルの画像を埋め込む
どうも、Discord.jsを使ったBOTを作り始めて一週間の初心者です。
あ、あと初投稿です。(記事の稚拙さは大目に見てください)
Discordでの埋め込みとは
さて、discordで情報をまとめてカッコよく吐き出す手段に、embedという形式があります。(詳しくは大変お世話になったページをご覧になってください。)
これを使うと、以下のようにカッコよく、クールでスタイリッシュ(ほとんど同じ意味)な感じで情報をまとめることができます。
ローカル画像を埋め込む
本題です。embedに埋め込みたい画像を、ネットの海の中からurl指定するのではなく自分のPCから指定したい時、一手間必要です。具体的には、以下のようにする必要があります。
const discord = require('discord.js');
const client = new discord.Client();
// ~~~省略~~~
// 参加しているチャンネルにメッセージが送信された時に実行
client.on("message", message => {
// BOTが自分の投稿に反応しないように
if(message.author.bot)return;
message.channel.send({
embed : {
image : {
url : "attachment://暫定ファイル名"
}
},
files : [{ attachment : "ローカルのファイルパス", name : "暫定ファイル名"},
..., /*使う画像の分だけ*/
]
}
// ~~~省略~~~
//サーバーにログインする
client.login("BOTのトークン", true);
ごく単純な、メッセージが送られたら必ず画像埋め込んで送るという迷惑極まりないBOTです。
注目していただきたいのは、url
の指定方法。attachment://
ってついてます。ついでにfiles
のなかにもattachment
の文字があります。これはfiles
のname
で指定した変数に画像ファイルを入れているようなもの、と私は考えています(保険)。
url
にて、name
にattachment://
と付けてローカル画像を指定できます。
###注意点
さてさて、本当の本題です。このname
、日本語に対応していないようです。
name
は半角英数字にしましょう!
長々と周辺の説明をわかりにくくしてきた癖に言いたいことはこれだけです。
変数名は英語にしようね?
「何を今更…」という方もいらっしゃるでしょう。
しかし、name
を変数だと考えずに関数のタイポやバージョンの壁を疑って一日を無駄にしてしまう可能性を潰したかったのです。なんてもったいない時間の使い方だったのだろう。
繰り返しますが 初 投 稿なもので、しきたりとか見やすさとかよくわかりません。
その中で拙文を読むという苦行に耐えてくださった皆様には軽く感謝を。