概要
discord.jsのバージョンがv12になり、グローバルチャットの機構を作ったので、メモしとこうかなと思います。
(ほかの人も記事を書いているので参考程度に...)
解説とありますが、まだまだすごいdiscord.jsが扱えるわけではないので、間違っているかもしれないので
気軽に見てってください。
BOTの導入やNode.js等のインストールはすでに済んでいるものとします。
環境
名前 | versionとか |
---|---|
Node.js | v12.16.3 |
discord.js | v12.2.0 |
OS : Windows10
コード
constdiscord=require('discord.js');// --1constclient=newdiscord.Client();client.on("message",asyncmessage=>{// --2if(message.channel.name==="チャンネル名"){// --3if(message.author.bot)return;// --4if(message.attachments.size<=0){message.delete()}client.channels.cache.forEach(channel=>{// --5if(message.attachments.size<=0){constembed=newdiscord.MessageEmbed()// --6.setAuthor(message.author.tag,message.author.avatarURL()).setDescription(message.content).setColor(0x2C2F33)if(channel.name==="チャンネル名"){// --7channel.send(embed)return}return}if(!message.attachments.forEach(attachment=>{//--8constembed=newdiscord.MessageEmbed().setAuthor(message.author.tag,message.author.avatarURL()).setImage(attachment.url).setDescription(attachment.url).setColor(0x2C2F33)if(channel.name==="チャンネル名"){channel.send(embed)return}return}));return});}});client.login("BOT_TOKEN")// --9
解説
--1 : discord.jsの読み込みをしています
--2 : Message イベントが起こったときに、この括弧内の処理がされます
--3 : Message が送信されたチャンネルが チャンネル名
だった場合になるように条件分岐をしています
--4 : 再帰を防ぐために、Messageを送信した人がBOTだった場合は処理を行わないように return
を書いています
--5 : BOTが参加しているすべてのサーバーのチャンネルを取得しています(簡単に言うとforEachはforに似たようなもの)
--6 : v11.xでは discord.RichEmbed()
でしたが、v12.xでは discord.MessageEmbed()
になりました
--7 : 取得したチャンネルのうちチャンネルの名前が チャンネル名
か否かを判断する条件分岐です
--8 : 写真等が送信されたときに処理が行われます (解説が書けそうでしたら後日書きます)
--9 : これがなければBOTにはログインしてくれません
まとめ
グローバルチャットはBOTが導入されているサーバーで会話することができます。
ただトラブル等起きやすいので、グローバルチャットを利用するときは常識を守りましょう。
上のコードはシンプルな方です。まだまだいろんな機能を付け加えられると思うのでぜひチャレンジしてみてください!