いろいろな記事を探して回りましたが、discord.jsでsilentのメッセージを送る方法がほとんど見つからなかったのでここに書いておきます。
環境
node.js v16.14.2
discord.js v13.14.0
以下のように書くことで、silentでメッセージを送信することができる。
Discord.js v14以降の場合、MessageFlagsではなくMessageFlagsBitFieldに変更されている。
code.js
//MessageFlagsを指定しておかないとエラーが出る.
const { MessageFlags } = require('discord.js');
const flags = MessageFlags;
//MessageFlags.bitfieldを4096にするとサイレントになる.
messsage.reply({content: 'silentメッセージです', flags: MessageFlags.bitfield=4096})
ちなみに、console.logでmessageの内容を出力すると、bitfieldが違うことが分かる。
silentメッセージ
<ref *1> Message {
channelId: '0000000000000000000',
guildId: '0000000000000000000',
...(中略)...
webhookId: null,
groupActivityApplication: null,
applicationId: null,
activity: null,
flags: MessageFlags { bitfield: 4096 },
reference: null,
interaction: null
}
通常メッセージ
<ref *1> Message {
channelId: '0000000000000000000',
guildId: '0000000000000000000',
...(中略)...
webhookId: null,
groupActivityApplication: null,
applicationId: null,
activity: null,
flags: MessageFlags { bitfield: 0 },
reference: null,
interaction: null
}
このように、通常メッセージはbitfieldが0,silentのメッセージはbitfieldが4096になっているため、
flags: MessageFlags.bitfield=4096を指定してやることでサイレントメッセージを送信できるわけです。
参考
https://stackoverflow.com/questions/76517603/how-to-send-a-silent-message-with-discord-js