Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9140

Discord BOTを特定チャンネルで呼びかけると反応するようにするメモ

$
0
0
久々にDiscrod BOTを触ってみてます。なんか前にも同じようなメモ書いた気もしてる... こんな感じにユーザーが発言したチャンネルによって処理のハンドリングをさせたいってメモです。 基本 自分用おさらいとしてメモ残しておきます。 Discord.jsのトップページのサンプルと一緒ですが、 サンプルの方はパッと見トークンをどこに入れれば良いのか分からないので注意。 Discrod.js const Discord = require('discord.js'); const client = new Discord.Client(); client.on('ready', () => { console.log(`Logged in as ${client.user.tag}!`); }); client.on('message', msg => { if (msg.content === 'ping') { msg.reply('Pong!'); } }); client.login(`アクセストークン`); client.login()の箇所に取得したアクセストークンを指定して起動すればOKです。 Webhook URLなど指定せずにローカルで試せます。 まずはこれでping/pongを試せます。 チャンネルの取得をしてハンドリング msg.channel.idでチャンネルのIDを指定するか、msg.channel.nameでチャンネル名を指定するかが良さそうです。 チャンネルIDの場合 チャンネルIDでハンドリングしたい場合はmsg.channel.idを利用します。 Discordのチャンネルを開いてる時のURLは以下のような形式です。 https://discord.com/channels/XXXXXX/YYYYYY このXXXXXXXの部分がサーバーごとのIDになり、YYYYYYの部分がチャンネルごとのIDになります。 ちなみにDMの場合は以下のような形式になります。 https://discord.com/channels/@me/YYYYYY URLの最後のYYYYYYがチャンネルIDになるので以下のようにハンドリング出来ます。 //省略 //特定の部屋での発言 if(msg.channel.id === 'YYYYYY'){ msg.channel.send('今日の会議の議事録はこちらです! https://hogehoge.com'); } //それ以外の部屋では反応しない else{ msg.reply('この部屋で設定されている会議はありません。'); } //省略 チャンネル名の場合 チャンネル名でハンドリングしたい場合はmsg.channel.nameを利用します。 ↑のように表示されてる名前です。ただ、この場合名前が合ってればという判定なので、運用で部屋の名前を変更した際などに想定している動作にならなくなるので注意が必要そうです。 //省略 //特定の部屋での発言 if(msg.channel.name === 'n0bi-playground'){ msg.channel.send('今日の会議の議事録はこちらです! https://hogehoge.com'); } //それ以外の部屋では反応しない else{ msg.reply('この部屋で設定されている会議はありません。'); } //省略 コード全体 const Discord = require('discord.js'); const client = new Discord.Client(); client.on('ready', () => { console.log(`Logged in as ${client.user.tag}!`); }); client.on('message', msg => { if (msg.content === 'ping') { msg.reply('Pong!'); } if(msg.content === '会議URL教えて'){ if(msg.channel.id === 'YYYYYY'){ msg.channel.send('https://hogehoge.com/hugahuga'); }else{ msg.reply('現在の部屋では設定されてるURLがありません。'); } } }); client.login(`アクセストークン`); 補足: 発言させるmsg.channel.sendとmsg.reply どっちもBOTを発言させるときですが、以下の違いがあります。 msg.channel.sendを使うとそのチャンネルでBOTが発言 msg.replyで発言者にリプライ付きでBOTが返信

Viewing all articles
Browse latest Browse all 9140

Trending Articles