送られた画像ファイルをオウム返しする
メッセージに添付ファイルがあるか調べ、画像だったら埋め込みに画像URLを入れて送信するというもの
message.attachments.first() で添付ファイルを取得している。無かったらundefinedが返ってくる。
if (!file) return で添付ファイルが無かった場合は無視している。
if (!file.height && !file.width) return は画像ファイルであるかを調べている。
画像ファイルでない場合、heightとwidthにはnullが入っている。
message.channel.send({ embeds: [{ image: { url: file.url } }] }) で埋め込みに添付ファイルのURLを入れて送信
注意:Discord APIにファイルの種類を判別する方法がなくて、画像か動画のときだけあるheightとかを使っているだけなので、これだけだと動画にも反応してしまう
code:js
const Discord = require('discord.js')
const client = new Discord.Client({
intents: // ...
})
client.on('messageCreate', message => {
const file = message.attachments.first()
if (!file) return // 添付ファイルがなかったらスルー
if (!file.height && !file.width) return // 画像じゃなかったらスルー
return message.channel.send({
embeds: [{
image: {
url: file.url
}
}]
})
})
client.login('Your token.')
MessageAttachment#contentTypeにはmimeが格納されている。
imageで始まっていれば画像であると判断してよいだろう。
code:js
const Discord = require('discord.js')
const client = new Discord.Client(
{
intents: Discord.Intents.FLAGS.GUILD_MESSAGES|Discord.Intents.FLAGS.GUILDS
}
)
client.on('messageCreate', message => {
const file = message.attachments.first()
if (!file) return // 添付ファイルがなかったらスルー
if (!file.height && !file.width) return
if (!file.contentType?.startsWith("image")) return
return message.channel.send({
embeds: [{
image: {
url: file.url
}
}]
})
})
client.login('Your token.')
関連