呼びかけてリプライさせるなどではなく、別のプログラムから
Webhook使う形でも良いのですが、毎回Webhook URLを発行するのも手間になってきたので、調べてみました。
client.channels.cache.get().send()
こちらの記事にある記載で出来ました。
client.channels.cache.get('送信するチャンネルのID').send('メッセージ')
なかなか長いメソッド
送信のサンプルコード
以前書いたメモのサンプルコードがそのまま使えました。
const { Client ,Intents } = require('discord.js');
const client = new Client({
intents: [
Intents.FLAGS.GUILDS,
Intents.FLAGS.GUILD_MESSAGES
]
});
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
client.on('messageCreate', message => {
if (message.content === 'ping') {
message.channel.send('ぽんぐ!');
//ID指定でメッセージ送信
client.channels.cache.get('yyyyyyyyyyyyyyyyyy').send('指定チャンネルにメッセージ送信!!!');
}
});
client.login(`アクセストークン`);
チャンネルのIDはどこで調べるのか
チャンネルIDは数字になります。
Web版のDiscordだと部屋ごとでURLが表示されていると思うので、以下のようなURL形式の1番末尾部分が
IDとなります。
https://discord.com/channels/xxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyy
の箇所がチャンネルIDになります。
また、メニューから取得も可能です。
チャンネルの名前のあたりからコンテキストメニューを開くとIDをコピー
という項目もあるのでここからコピーもできます。
試す
二つ以上のチャンネルにボットを入れて試すと分かりやすいです。
- STEP1. 片方のチャンネル(IDを指定してない方)でpingを投げます。
- STEP2. もう片方のチャンネル(IDを指定した方)にボットが投稿します。
これでリプライではなく指定チャンネルに送信出来ていることが確認出来ました!
特に詰まらずに成功 :)