我如何检查谁邀请了谁 Discord.js

Posted

技术标签:

【中文标题】我如何检查谁邀请了谁 Discord.js【英文标题】:How Do i Check Who Invited Who Discord.js 【发布时间】:2021-08-16 18:47:58 【问题描述】:

嘿,所以我正在制作一个邀请记录器,我需要帮助,我不知道如何找到邀请用户的用户

client.on('guildMemberAdd', async (member) => 
    const channel = member.guild.channels.cache.get('CHANNEL_ID');
    channel.send(`Welcome $member.user.tag Invited By $inviter`)
)

【问题讨论】:

您需要获取和访问审核日志,请查看this guide 【参考方案1】:

没有简单的内置方法可以做到这一点,因此您必须存储每个邀请的使用次数,然后当有人加入时,查看哪个邀请的使用与最后一个已知数字不匹配,即查看哪个邀请的使用次数发生变化。

client.invites = 

client.on('ready', () => 
    client.guilds.cache.each(guild =>  //on bot start, fetch all guilds and fetch all invites to store
        guild.fetchInvites().then(guildInvites => 
            guildInvites.each(guildInvite => 
                client.invites[guildInvite.code] = guildInvite.uses
            )
        )
    )
)

client.on('inviteCreate', (invite) =>  //if someone creates an invite while bot is running, update store
    client.invites[invite.code] = invite.uses
)

client.on('guildMemberAdd', async (member) => 
    const channel = member.guild.channels.cache.get('CHANNEL_ID');
    member.guild.fetchInvites().then(guildInvites =>  //get all guild invites
        guildInvites.each(invite =>  //basically a for loop over the invites
            if(invite.uses != client.invites[invite.code]  //if it doesn't match what we stored:
                channel.send(`Welcome $member.user.tag Invited By $invite.inviter.tag`)
                client.invites[invite.code] = invite.uses
            
        )
    )
)

您应该添加某种检查(我承认我应该这样做),因为他们可能使用了虚 URL 或服务器发现或其他一些奇怪的加入方式,在这种情况下它可能会出错。

【讨论】:

树叶怎么样 如果成员离开并重新加入,将被视为被邀请两次。如果你想阻止这种情况,你需要某种数据库。

以上是关于我如何检查谁邀请了谁 Discord.js的主要内容,如果未能解决你的问题,请参考以下文章

DiscordJs:邀请机器人时检查 serverId

是新技术互联网创新和消费者需求,究竟谁成就了谁。

查询锁谁阻塞了谁

转:科技与社会,是谁改变了谁?

转:科技与社会,是谁改变了谁?

灰色心情