提问者:小点点

从用户标记到用户id


我试图创建一个函数,它给我一个基于此视频邀请一个新用户的人的id:https://www.youtube.com/watch?v=17ounsldwem,但这给我一个用户的标签(例如:“username.0000”)

module.exports = (client) => {

  const invites = {}

  const getInviteCounts = async (guild) => {
    return await new Promise((resolve) => {
      guild.fetchInvites().then((invites) => {
        const inviteCounter = {}

        invites.forEach((invite) => {
          const { uses, inviter } = invite
          const { username, discriminator } = inviter
          const name = `${username}#${discriminator}`

          inviteCounter[name] = (inviteCounter[name] || 0) + uses
        })

        resolve(inviteCounter)
      })
    })
  }

  client.guilds.cache.forEach(async (guild) => {
    invites[guild.id] = await getInviteCounts(guild)
  })

  module.exports = {
      getInviter: async function getInviter(member){
          const { guild, id } = member
          const invitesBefore = invites[guild.id]
          const invitesAfter = await getInviteCounts(guild)       
          for (const inviter in invitesAfter) {
              if (invitesBefore[inviter] === invitesAfter[inviter] - 1) {
                  invites[guild.id] = invitesAfter
                  let result = member.guild.members.cache.find(c => c.tag === inviter)
                  return result
              }
          }
      }
  }
}

我将;c.tag===inviter)/code>从该标记获取用户对象,以后我可以使用result.id,但console.log(result)给出了未定义的结果


共1个答案

匿名用户

Invite的扩展为您提供了所述用户的User对象,因此您剩下的唯一任务就是使用

const { inviter } = invite
console.log(inviter.id)