「BOTになりきりたい!」Discord.jsを使ってBOTアカウントを遠隔操作する


Discord.js v.13を使って、BOTを裏から操る機能を作ってみました!

「BOTになりきって会話をしたい!」そんな願いを叶える機能です!
応用次第で「サーバーを跨いだ連携チャンネル(ミニグローバルチャット)」なども作れちゃいますよ!

 必要なもの
・ベースとなるBOT
・Discord.js v.13
・Keyv(外部ライブラリ)
・BOT操作のための専用チャンネル

コマンドで接続先のチャンネルを指定
(この記事に載せているコードではコマンドが異なります:”!setchannel”)
操作用のチャンネルで発言すると……
最初の画像、コマンドでIDを指定したチャンネルでBOTが発言!
逆に指定先のチャンネルでの発言は……
操作用チャンネルで表示される
BOTを通して会話をする際も、忙しくチャンネル移動をする必要がない!

コード

const Keyv = require("keyv");
/*/

接続先チャンネルID指定

/*/
const fenrir_room = new Keyv("sqlite://db.sqlite", { table: "Channel_ID" });

client.on("messageCreate", async (message) => {
    if (message.author.bot) {
      return;
    }
    const splitmessage = message.content.split(" ");
    if (splitmessage[0] === "!setchannel") message.channel.send("チャンネルを指定");
    await Channel_ID.set("channel", splitmessage[1]);
});

//操作チャンネルへ転送
client.on("messageCreate", async (message) => {
  const Channel_ID= await Channel_ID.get("channel");
  if (message.channel == client.channels.cache.get(`${Channel_ID}`)) {
    if (message.author.bot) {
      return;
    }
    const words = message.content;
    const user = message.author.username;
    client.channels.cache
      .get(`(BOT操作用のチャンネルID)`)
      .send(`\`${user}\`\n${words}`);
  }
});

//操作チャンネルから転送
client.on("messageCreate", async (message) => {
  if (message.channel == client.channels.cache.get("(BOT操作用のチャンネルID)")) {
    if (message.author.bot) {
      return;
    }
    const words = message.content;
    Channel_ID = await Channel_ID.get("channel");
    client.channels.cache.get(`${Channel_ID}`).sendTyping();
    setTimeout(() => {
      client.channels.cache.get(`${Channel_ID}`).send(`${words}`);
    }, Math.random() * 500 + 300);
  }
});


この記事が気に入ったらサポートをしてみませんか?