JavaScript
Node.js

Discord.jsでEmbedのグローバルチャットを作る


追記

この記事が人気のため僕のブログにも載せました。(ただそれだけ)

https://blog.yopon.jp/post-118/


概要

よくあるグローバルチャット(パブリックチャットとも言う)の作り方のソースコードを書きます。

※インストール内容はCentOS7の環境での方法を紹介します。CentOS7以外のインストール方法は調べてインストールしてください。


1. Node.jsのインストール方法

下の2つのコマンドを実行するだけです。

curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -

sudo yum -y install nodejs gcc-c++ make


2. Discord.jsのインストール方法

下の1つのコマンドを実行するだけです。

npm install discord.js


3. Botアカウントの作成方法とサーバーへの追加方法


Botアカウント作成方法

ここ (https://discordapp.com/developers/applications/)からDiscordの開発者ページにアクセスして、「New App」をクリックします。

「NAME」にBotの任意の名前を入れて「Create」を押すとアプリができます。

アプリを作成したら、Botを作ります。右にある「Bot」をクリックして、「Add Bot」を押すことでBotを作ることができます。

最後にTokenの下にある「Copy」ボタンを押してメモ帳にペーストしておいてください。後で使います。このTokenは晒すとBotが乗っ取られるので注意です。


サーバーへの追加方法

右にあるOAuth2をクリックして下にある「Bot」というボタンをクリックします。すると新しい項目がでてくるのでそこで管理者を渡しておくと今後何でもできるので「管理者」をクリックします。チェックが付けばOKです。その後にBotと選択した項目の下にとURLが出てくるので、ブラウザのアドレスバーにコピーして開きます。「Botを追加します。」とでてくるのでサーバを選択して「認証」を押すと完了です。

Botの招待には招待するサーバーで管理者権限が必要です。


4. コードを書いていく

次に本題のコードを書いていきます。まず、Botを作るフォルダーにApp.jsというファイルを作ってソースコードエディタ(おすすめはVisual Studio Code)を使ってApp.jsを開きます。その中に下記のコードを入力します。


const Discord = require('discord.js');
const client = new Discord.Client();

client.login("<Token>");

client.on('message', message =>
{
if (message.channel.name === 'チャンネル名')
{
if (message.author.bot) return;
if (message.attachments.size <= 0)
{
message.delete()
}
client.channels.forEach(channel =>
{
if (message.attachments.size <= 0)
{
const embed = new Discord.RichEmbed()
.setAuthor(message.author.tag, message.author.avatarURL)
.setDescription(message.content)
.setColor(0x2C2F33)
.setFooter(message.guild.name, message.guild.iconURL)
.setTimestamp()
if (channel.name === 'チャンネル名')
{
channel.send(embed)
return;
}
return;
}
if (!message.attachments.forEach(attachment =>
{
const embed = new Discord.RichEmbed()
.setAuthor(message.author.tag, message.author.avatarURL)
.setImage(attachment.url)
.setDescription(attachment.url)
.setColor(0x2C2F33)
.setFooter(message.guild.name, message.guild.iconURL)
.setTimestamp()
if (channel.name === 'チャンネル名')
{
channel.send(embed)
return;
}
return;
}));
return;
});
}
})

チャンネル名のところはグローバルチャットにしたいチャンネル名を決めてください。

Tokenはさっきメモ帳にコピーしたTokenをここに貼り付ける

これで保存してください。


5. 早速Botを起動してみよう!

早速Botを起動してみましょう。起動もコマンド1つでできます。

node App.js

これで完成です。みなさんもぜひ試してみてください!

なにか間違い等あれば admin@yopon.cf までお願いいたします。


Botサンプルを用意しました。ぜひご使用ください。

https://discordapp.com/api/oauth2/authorize?client_id=559985159068319746&permissions=8&scope=bot

チャンネル名は discordjsでembedのグローバルチャットを作る です。