Мне нужно исправить код для общения людей, покидающих сервер, и отслеживания их приглашающих. Node js Discord - PullRequest
0 голосов
/ 07 ноября 2019

Я делаю код для новых членов на сервере 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}`)
        })
})

1 Ответ

0 голосов
/ 07 ноября 2019

Discord не дает эффективного способа узнать, кто приглашает пользователя. Способ, которым вы пользуетесь в вашем случае, непрост для понимания для начинающих.

  • Вы получаете все приглашения сервера (с их счетом использования) и сохраняете их в локальной переменной
  • Когдаприсоединение к члену, вы проверяете, для какого приглашения увеличен счет использования
  • Вы обновляете локальную переменную новыми данными

Это означает, что если приглашение было создано после выборка в вашей локальной переменной, вы не сможете узнать, кто пригласил участника. Нажмите здесь для получения дополнительной информации.

Чтобы узнать, кто пригласил участника, вам необходимо сохранить его в локальной переменной (или в базе данных, лучше), который пригласил его в guildMemberAdd событие, потому что вы не сможете узнать это в событии guildMemberRemove. Поэтому отслеживание приглашений пользователей очень сложно и сложно.

...