为什么是<@&undefined>?

编程入门 行业动态 更新时间:2024-10-04 13:29:29

<a href=https://www.elefans.com/category/jswz/34/1764063.html style=为什么是<@&undefined>?"/>

为什么是<@&undefined>?

所以基本上当我用我的机器人做/更新时它正在添加角色但是在消息中它说<@&undefined>再次添加用户角色。

部分代码:

 const addedRoles = [];
const removedRoles = [];

try {
  const inGroup = await noblox.getRankInGroup(groupid, await noblox.getIdFromUsername(robloxUsername));
  if (inGroup) {
    // Find the matching rankbind
    const rankNumber = await noblox.getRankInGroup(groupid, await noblox.getIdFromUsername(robloxUsername));
    const rankbind = groups.rankbinds.find(r => r.rank === rankNumber);


    
    if (rankbind) {
      const rolesArray = rankbind.roles;

  // Add all roles that are in the rolesArray
  const rolesToAdd = rolesArray.filter(roleId => !guildMember.roles.cache.has(roleId));
  if (rolesToAdd.length > 0) {
    await guildMember.roles.add(rolesToAdd);
    addedRoles.push(...rolesToAdd);
  }
    
  // Remove all roles that are not in the rolesArray, 
  const rolesToRemove = guildMember.roles.cache.filter(role => !rolesArray.includes(role.id) && role.id !== guild.id);
  if (rolesToRemove.size > 0) {
    await guildMember.roles.remove(rolesToRemove);
    removedRoles.push(...rolesToRemove);
  }


      // Set the user's nickname
      const template = rankbind.template;
      const nickname = `${template} ${robloxUsername}`;
      if (nickname !== guildMember.nickname) {
        await guildMember.setNickname(nickname);
      }
    }
  }


  // Send confirmation message
  const embed = new EmbedBuilder()
    .setColor('#000000')
    .setAuthor({
      name: guildMember.user.tag,
      iconURL: guildMember.user.displayAvatarURL(),
    })
    .setTitle('Roles Update')
    .setDescription('Successfully updated user roles')
    .addFields(
      { name: 'Nickname', value: guildMember.nickname || guildMember.user.username },
      {
        name: 'Roles Added',
        value: addedRoles.length ? addedRoles.map(role => `<@&${role.id}>`).join('\n') : 'None'
      },
      {
        name: 'Roles Removed',
        value: removedRoles.length ? removedRoles.map(role => `<@&${role.id}>`).join('\n') : 'None'
      },
    );

留言图片: [图片][1]

我正在使用discord js。 Node.js v18.15.0。不知道这些信息是否对您有帮助 [1]:

回答如下:

显然,在存储角色时,您存储的不是角色对象,而是角色Id,因此数组addedRoles 是一个id 数组,这就是它返回undefined 的原因。

尝试更换

addedRoles.map(role => `<@&${role.id}>`)

addedRoles.map(roleId => `<@&${roleId}>`)

更多推荐

为什么是<@&undefined>?

本文发布于:2024-05-30 18:51:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770809.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:为什么是   lt   amp   undefined   gt

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!