私はDiscord.jsを使用して基本的なDiscordボットを作成しています。ボットが最初に起動されたときに、client.guilds.array()
を実行して、ボットが現在サブスクライブしているすべてのギルドのリストを取得します。これを他のプログラムで使用されているデータベースに保存します。
ただし、人々がギルドにボットを追加/削除するときに、ギルドの最新リストを保持したいと思います。毎分clients.guilds.array()
を再実行できると思いますが、それは非効率的です。
ボットがギルドやチャンネルに追加されたときに発生するイベントはありますか?私が読んだところによると、ギルドにサブスクライブしているすでにのすべてのユーザー/ボットに対してguildMemberAdd
イベントが発生しているようです。ギルドに追加されたときにボットに通知するようなイベントはありますか?
はい、あり、クライアントイベントで表示できます https://discord.js.org/#/docs/main/stable/class/Client 。イベントを使用してギルドの配列を更新する簡単な例:
const discord = require("discord.js");
const client = new discord.Client();
let guildArray = client.guilds.array();
//joined a server
client.on("guildCreate", guild => {
console.log("Joined a new guild: " + guild.name);
//Your other stuff like adding to guildArray
})
//removed from a server
client.on("guildDelete", guild => {
console.log("Left a guild: " + guild.name);
//remove from guildArray
})