【发布时间】:2022-02-03 22:26:57
【问题描述】:
我正在制作一个不和谐机器人,它需要跟踪哪个用户使用哪个邀请链接加入了服务器。为此,它需要跟踪用户生成的不和谐邀请链接代码。这是我的代码。我能够获取邀请用户的用户 ID、他已经添加了多少用户以及加入的成员的 ID。我无法正确获得的是邀请码。这是我的代码
const invites = {} // { guildId: { memberId: count } }
let Array = [];
const getInviteCounts = async (guild) => {
return await new Promise((resolve) => {
guild.fetchInvites().then((invites) => {
const inviteCounter = {} // { memberId: count }
invites.forEach((invite) => {
const { uses, inviter,id } = invite
const { username, discriminator } = inviter
console.log("ID is ",invite.code);
const name = `${username}#${discriminator}`
Array[name] = [inviter,[invite.code]];
inviteCounter[name] = (inviteCounter[name] || 0) + uses
})
resolve(inviteCounter)
})
})
}
client.guilds.cache.forEach(async (guild) => {
invites[guild.id] = await getInviteCounts(guild)
})
client.on('guildMemberAdd', async (member) => {
const { guild, id } = member
const invitesBefore = invites[guild.id]
const invitesAfter = await getInviteCounts(guild)
console.log('BEFORE:', invitesBefore)
console.log('AFTER:', invitesAfter)
for (const inviter in invitesAfter) {
if (invitesBefore[inviter] === invitesAfter[inviter] - 1) {
const channelId = '937987923205304390'
const channel = guild.channels.cache.get(channelId)
const count = invitesAfter[inviter]
let userID = client.users.cache.find(u => u.tag === inviter).id;
console.log("USERID",inviter.code);
channel.send(
`Please welcome <@${id}> to the Discord! Invited by ${inviter} (${count} invites)`
)
invites[guild.id] = invitesAfter
return
}
}
})
【问题讨论】:
-
您使用哪个版本的 discord.js?
-
@julianYaman 我正在使用 discord js v12.5.3
标签: javascript node.js discord discord.js node-modules