首页 > 解决方案 > 我需要修复与离开服务器的人进行交流并跟踪他们的邀请者 Node js Discord 的代码

问题描述

我在 Discord 服务器上为新成员编写代码并且它可以工作。但是我在离开者的代码中出现了一些错误。我需要编写哪些命令来编写工作代码。


//this is for new members
client.on('guildMemberAdd', member => {
    member.guild.fetchInvites()
        .then(invites => {
            const ib = inviterses[member.guild.id];
            inviterses[member.guild.id] = invites;
            const logs = invites.find(i => ib.get(i.code).uses < i.uses);
            const joinchannel = member.guild.channels.find(channel => channel.name === "joiners");
            joinchannel.send(`${member} **join**. Inviter- **${logs.inviter.tag}** (**${logs.uses}** invites)`)
            console.log(`${member} **join**. Inviter- **${logs.inviter.tag}** inviter(**${logs.uses}** invites)`)

        });
})

// this code for leavers,it not working
client.on('guildMemberRemove', (member) => {
    targetUser = member.id
    member.guild.fetchInvites()
        .then(invites => {
            const userInvites = invites.array().filter(o => o.inviter.id === targetUser.id);
            inviterses[userInvites.id].has[targetUser.id]
            inviterses.delete(targetUser.id)
            const leavchannel = member.guild.channels.find(channel => channel.name === "leavers");
            leavchannel.send(`${targetUser.user.username} left;Invited by ${userInvites.inviter.tag}`)
        })
})

标签: node.jsdiscorddiscord.js

解决方案


Discord 没有提供一种有效的方式来了解谁邀请了成员。您在案例中使用的方式对于初学者来说并不容易理解。

  • 您获取所有服务器邀请(及其使用次数)并将它们存储在本地变量中
  • 当成员加入时,您检查哪个邀请的使用次数增加了
  • 你用新数据更新你的局部变量

这意味着如果邀请是在您的本地变量中获取之后创建的,您将无法知道谁邀请了该成员。点击这里查看更多信息。

要知道谁邀请了成员,您需要将其存储在本地变量(或数据库中,最好是)中,guildMemberAdd因为您无法在guildMemberRemove活动中知道是谁邀请了他。所以跟踪用户邀请是非常复杂和困难的。


推荐阅读