向用户列表批量分配角色 discord.js v13

Mass assign roles to the list of users discord.js v13

此代码将指定角色分配给成员列表。 当我尝试从 message.guild.members.

获取具有用户 ID 的成员时出现的问题

代码

// !roleAssign @role 
const roleAssign = async function(message){
  const Role = message.mentions.roles.first();
  // split by new line
  const users = message.content.slice(prefix.length).split(/\r?\n/).slice(1);

  let members = await message.guild.members.fetch();

  users.forEach(user => {
    const u = client.users.cache.find(u => u.tag === user);
    if(u){
      const userId = u.id;
  
      // member with the userID
      let member = members.cache.get(userId);

      // give role to the member
      try{
        member.roles.add(Role)
      }
      catch(e){console.error(e)};
  });

} 

我收到这个错误。 如何对获取的成员使用 get 函数?

let member = members.cache.get(userId);
                            ^
TypeError: Cannot read properties of undefined (reading 'get')

这是因为 guild.members.fetch() returns 是一个集合,而不是 GuildMemberManager 有一个 cache 属性。这意味着,您可以像这样使用 Collection#get(),而无需 cache:

let member = members.get(userId);