LoginSignup
5
4

More than 3 years have passed since last update.

discord.jsで多機能bot作り

Last updated at Posted at 2020-08-21

こんにちは。
今回は、Discord.jsでいろいろ作ってみます()
https://qiita.com/hakureireimu111/items/8cb3e55f11e231a0971e
を、作ってあったり、もとからオンラインになっているBOTを前提に作っています。

まず、botで嫌がらせ対策

//不適切なメッセージのさくじょ
client.on('message',message=>{
 if (message.content.match(/しね|ころす|死ね|殺す|きっしょ|ゴミ|野獣先輩|糞|カス/)) {
   message.channel.send('不適切な表現が含まれていたため、削除しました。');
  message.delete(100)
}
})
client.on('message',message=>{
if (message.content.match(/不適切な表現が含まれていたため、削除しました。/)) {
        message.delete(3000)
   }
});

で、出来ます。
NGワードを追加したい場合は、

|追加するもの

で、できます。
普通に楽しく会話

client.on('message',message=>{
  if (message.content.match(/この言葉が含まれている書くと/)) {
    message.channel.send('ここのなかのメッセージを送る');
  }
});

っていうかんじになります。
また、特定の言葉に反応するようにするなら、

client.on('message', message=> {
 if (message.content ==='この言葉を入力すると') {
message.channel.send ('この言葉で反応する');
}
});

埋め込みメッセージ
埋め込みメッセージは、

client.on('message', message=> {
  if (message.content ==='')  
message.channel.send(
  {embed: {
    color: 7506394,
    fields: [
      {
        name: "",
        value: ""
      },
      {
        name: "",
        value: ""
      },
      {
        name: "",
        value: ""
      },
      {
        name: "",
        value: ""
      },


    ]
  }}
)});

で、できます。
nameに、見出しを入れて、
valueに内容を書く感じです。

グローバルチャット
グローバルチャットは、

//______________グローバルチャット_____________________________
client.on('message', message => { // メッセージが送信されたとき
    if(message.author.bot){
        return;
    }
    if (message.channel.name == ("チャンネル名")){ // もし送信された場所が「グローバルチャット」なら
        message.delete(); // メッセージを削除する(二重になるのを防ぐため)
        const ch_name = "チャンネル名"; // 「グローバルチャット」という名前のチャンネルに一斉配信
        client.channels.forEach(channel => {
            if (channel.name === ch_name) {
                channel.send({embed: {
                    title: message.content, // メッセージ内容
                    color: 0x800080, // 色
                    timestamp: new Date(),
                    footer: {
                        text: "グローバルチャット" //フッターの内容
                    },
                    thumbnail: {
                        url: "https://cdn.discordapp.com/avatars/${message.author.id}/${message.author.avatar}.png" // ユーザーのアイコン
                    },
                    fields: [
                        {
                            name: "サーバー",
                            value: `${message.guild.name} (${(message.guild.id)})`, // 送信されたサーバーの名前とID
                            inline: true
                        },

                        {
                            name: "ユーザー",
                            value: `${message.author.username} (${message.author.id})`, // 送信したユーザーの名前とID
                            inline: true
                        }
                    ]
                }});
            }
        })
    }
});

で、できます。
チャンネル名は、グローバルチャットにしたいチャンネルの名を書いてください。
また、これを応用して、審査ログを作ることもできます。

client.on('message', message => {
    if(message.author.bot){
        return;
    }
    if (message.channel.name == ("審査をしたい場所のチャンネル名")){

        const ch_name = "審査ログにしたい場所のチャンネル名";
        client.channels.forEach(channel => {
            if (channel.name === ch_name) {
                channel.send({embed: {
                    title: message.content,
                    color: 0x800080,
                    timestamp: new Date(),
                    footer: {
                        text: "#審査をしたい場所のチャンネル名の審査ログ"
                    },
                    thumbnail: {
                        url: "https://cdn.discordapp.com/avatars/${message.author.id}/${message.author.avatar}.png"
                    },
                    fields: [
                        {
                            name: "チャンネル",
                            value: `${message.channel.name} (${message.channel.id})`,

                        },
                        {
                            name: "ユーザー",
                            value: `${message.author.username} (${message.author.id})`,

                        }
                    ]
                }});
            }
        })
    }
});

で、出来ます。
これは、グローバルチャットをインスパイアして、作ったものです。
コメントにリアクションする方法
ぴえんの場合↓

client.on('message',message=>{
  if (message.content.match(/🥺/)){
    let react = '🥺';
    message.react(react)
      .then(message => console.log("リアクション: 🥺"))
      .catch(console.error);
  }})
client.on('message',message=>{
  if (message.content.match(/ぴえん/)){
    let react = '🥺';
    message.react(react)
      .then(message => console.log("リアクション: 🥺"))
      .catch(console.error);
  }})

これは、ぴえんと入力されたらぴえんのリアクションがされます。
また、ぴえんの絵文字を使ったときにもぴえんのリアクションがされます。
ゲームの作り方
coinゲームは、

//コインゲーム
client.on('message', message => {
if(message.content === 'この発言をしたら、コインゲームができる'){
var array = [":dvd:omote", ":cd:ura"];
message.channel.send(array[Math.floor(Math.random() * array.length)]);
console.log(array[Math.floor(Math.random() * array.length)]);
}
})

です。
占いは、

//占い
client.on('message', message => {
if(message.content === 'この発言をしたら占いができる'){
var array = ["凶 えぇ、、、", "小吉 まあ、がんば", "中吉 普通で草", "吉 おめでと。", "大吉 おめでと。"];
message.channel.send(array[Math.floor(Math.random() * array.length)]);
console.log(array[Math.floor(Math.random() * array.length)]);
}
})

で、できます。

見てくださってありがとうございました。
何かわからないことがあったら、
レミリア・スカーレット#7059に、フレンド申請するか、
https://discord.gg/mSMgKNv
に、参加して質問で、聞いてください。
出来たら、これも読むことをオススメしますよ~。
https://qiita.com/hakureireimu111/items/1a840104bb29375e5011

5
4
2

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
5
4