3
1

More than 1 year has passed since last update.

Discord.js(v13系)で指定チャンネルにメッセージ送信メモ

Last updated at Posted at 2022-02-21

呼びかけてリプライさせるなどではなく、別のプログラムから

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になります。

また、メニューから取得も可能です。

スクリーンショット 2022-02-21 18.55.34.png

チャンネルの名前のあたりからコンテキストメニューを開くとIDをコピーという項目もあるのでここからコピーもできます。

試す

二つ以上のチャンネルにボットを入れて試すと分かりやすいです。

  • STEP1. 片方のチャンネル(IDを指定してない方)でpingを投げます。

スクリーンショット 2022-02-21 19.00.42.png

  • STEP2. もう片方のチャンネル(IDを指定した方)にボットが投稿します。

スクリーンショット 2022-02-21 18.59.50.png

これでリプライではなく指定チャンネルに送信出来ていることが確認出来ました!

特に詰まらずに成功 :)

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1