【问题标题】:How Do i Check Who Invited Who Discord.js我如何检查谁邀请了谁 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

标签: javascript node.js npm discord discord.js


【解决方案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 或服务器发现或其他一些奇怪的加入方式,在这种情况下它可能会出错。

【讨论】:

  • 树叶怎么样
  • 如果成员离开并重新加入,将被视为被邀请两次。如果你想阻止这种情况,你需要某种数据库。
猜你喜欢
  • 2018-06-20
  • 1970-01-01
  • 2017-11-19
  • 2017-04-18
  • 2015-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多