8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-03-26

概要

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

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?