「BOTになりきりたい!」Discord.jsを使ってBOTアカウントを遠隔操作する
Discord.js v.13を使って、BOTを裏から操る機能を作ってみました!
「BOTになりきって会話をしたい!」そんな願いを叶える機能です!
応用次第で「サーバーを跨いだ連携チャンネル(ミニグローバルチャット)」なども作れちゃいますよ!
必要なもの
・ベースとなるBOT
・Discord.js v.13
・Keyv(外部ライブラリ)
・BOT操作のための専用チャンネル
![](https://assets.st-note.com/img/1651231160545-km9YNGRAQH.jpg?width=1200)
(この記事に載せているコードではコマンドが異なります:”!setchannel”)
![](https://assets.st-note.com/img/1651232461862-mX26j1Clxm.jpg?width=1200)
![](https://assets.st-note.com/img/1651231600098-2u8IHVgIHH.jpg?width=1200)
逆に指定先のチャンネルでの発言は……
![](https://assets.st-note.com/img/1651231273880-zcYbKU8Rwz.jpg?width=1200)
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);
}
});