Help us understand the problem. What is going on with this article?

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

概要

よくあるグローバルチャット(パブリックチャットとも言う)の作り方のソースコードを書きます。
※インストール内容は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

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

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

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

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

Yopon
こんにちは!Yoponと申します。初心者プログラマーですがよろしくお願いいたします。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away