node.js - 我需要修复与离开服务器的人进行交流并跟踪他们的邀请者 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}`)
})
})
解决方案
Discord 没有提供一种有效的方式来了解谁邀请了成员。您在案例中使用的方式对于初学者来说并不容易理解。
- 您获取所有服务器邀请(及其使用次数)并将它们存储在本地变量中
- 当成员加入时,您检查哪个邀请的使用次数增加了
- 你用新数据更新你的局部变量
这意味着如果邀请是在您的本地变量中获取之后创建的,您将无法知道谁邀请了该成员。点击这里查看更多信息。
要知道谁邀请了成员,您需要将其存储在本地变量(或数据库中,最好是)中,guildMemberAdd
因为您无法在guildMemberRemove
活动中知道是谁邀请了他。所以跟踪用户邀请是非常复杂和困难的。
推荐阅读
- python - 使用openpyxl python模块访问路径中的文件时出错
- node.js - 如何检测来自 Puppeteer 的请求?
- android - 为什么当我删除 @SuppressLint("RestrictedApi") 时,Android Studio 会显示“只能从同一个库组中调用”?
- javascript - 如何使用索引动态更新javascript中的数组?
- android - 找不到变量:世博会
- http - HTTP、SMTP和SIP之间的通用协议是什么
- coq - 如何在 Coq 中将 P->Q->R 形式的命题同时应用于两个假设 P 和 Q?
- python - 一行中的赋值和加法
- flutter - 子小部件的 Flutter Transform.scale 不按比例缩放,为什么?
- postgresql - 通过管道在两台服务器之间传输数据库