🥴

【Discord.js】client.on("guildMemberAdd")が使えないので"messageCreate"から取得してみる

に公開

そんなに濃い目の内容でもなく、「こうすればいいよ!」系の記事なのでIdeaとして公開します。

discord.js-selfbot-v13での話ですが、恐らくdiscord.jsでもこの方法は通用するはずです。

きっかけ

サーバーに誰かしら参加してきた時のイベントをトリガーに処理しようとした時、docsを見ていると...

https://discordjs-self-v13.netlify.app/#/docs/docs/main/class/Client?scrollTo=e-guildMemberAdd

なんと、Client#guildMemberAddDeprecatedになっていました。Issueを見てみると、どうやらこのイベントはもう使えないようです。
でも大丈夫!Discordが用意してくれている参加メッセージをトリガーにできます。

messageCreateを使う

messageCreateイベントにはtypeが含まれています。

https://discordjs-self-v13.netlify.app/#/docs/docs/main/typedef/MessageType

これを使うと、メッセージがどの種類に該当するかを判別できます。(通常のメッセージ、ピン留め通知、などなど...)

Docsから、メンバー参加時のtypeはGUILD_MEMBER_JOINであることがわかるはずです!
つまり、このように書くことでメンバーが参加した場合の処理を行えます。

client.on("messageCreate", (message) => {
    if (message.type === "GUILD_MEMBER_JOIN") {
        const joinedUserId = message.author.id; //参加したのが誰かまでわかる!!
        //...
    }
})

簡単ですね! おわり!!

Discussion