为什么是<@&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>?
发布评论