【Node.js】Discordボイスチャンネルの入退室をテキストチャンネルに流すbotを作る
誘われて身内でDiscordを始めました.
誰かがボイスチャンネルに参加したり出たりした時に通知が欲しかったのですが,アプリを起動していないときはお知らせしてくれないようで(?)
テキストチャンネルは書き込みがあれば通知が届くので,音声チャットの入退室に合わせてテキストチャンネルにメッセージを投げるbotを作成しました.
9割9分9厘下記リンク様のコピペです!本当にありがとうございます助かりました!
[Node.js] [Discord] Discord の Bot を作る。 その3 | Cafe Dragon Forest
Node.jsでDiscordをいじれるErisというものを使っています.私はCentOS6で動かしました.
ただ,リンク先のコードをそのまま使うと
teratail.com
こちらの質問のようにエラーが発生します.解決策も提示されているのですが,こちらの環境ではdefaultChannelの取得で問題が発生したのか,うまくいきませんでした.
今回は入退室通知用のチャンネルを決めていたので,流すチャンネルIDを決め打ちで指定すれば解決できそうです.
チャンネルIDの取得は,Discordの各チャンネルの名前のあたりで右クリックしたメニューの中にありました.そこなのか.
というわけで,↓のように変更. チャンネルID と書いたところをメッセージを流したいチャンネルのIDに変更すれば動きました!
bot.on("voiceChannelJoin", (member, newChannel) => { bot.createMessage('チャンネルID', member.username + "が チャンネル[" + newChannel.name + "] に入室しました。"); }); bot.on("voiceChannelLeave", (member, oldChannel) => { bot.createMessage('チャンネルID', member.username + "が チャンネル[" + oldChannel.name + "] から退出しました。"); }); bot.on("voiceChannelSwitch", (member, newChannel, oldChannel) => { bot.createMessage('チャンネルID', member.username + "が チャンネル[" + oldChannel.name + "] から [" + newChannel.name + "] に移動しました。"); });
member.usernameをmember.nickにすれば,そのサーバ内で指定しているニックネームで表示されます.ニックネームを設定していない人はnullになっちゃいましたが……
最後にforever.jsを使って常駐.完成!