我正在执行一个机器人,它可以帮助我为锦标赛创建许多具有特定权限的频道。频道名称是“Team1-vs-Team2”。在服务器中,我们定义了与每个团队同名的角色(即来自“BarcelonaFC”的成员有一个名为“BarcelonaFC”的角色)
所以,假设本轮巴塞罗那对阵皇家马德里,那么执行的命令将是:
$stage
BarcelonaFC-vs-RealMadrid
然后,结果应该是创建一个名为“BarcelonaFC-vs-RealMadrid”的频道,并为其分配了具有特定权限的角色 BarcelonaFC 和 RealMadrid
这是我的代码(仅调整为使用 HOME 信息分配 BarcelonaFC 角色):
client.on('message', (message) => {
if (message.author.bot) return;
if (message.content.startsWith(process.env.PREFIX)) {
const [CMD_NAME, ...args] = message.content
.trim()
.substring(process.env.PREFIX.length)
.split(/\n+/);
if (CMD_NAME === 'del') {
message.guild.channels.cache.forEach(channel => channel.delete());
message.guild.channels.create('General', { type: 'text' });
message.guild.channels.create('FRENTE XXXX', { type: 'category' });
}
if (CMD_NAME === 'stage') {
if (args.length == 0) return message.reply('Please provide a stage number and teams');
var i;
for (i = 0; i < process.env.QTY_LLAVES; i++) {
const [HOME, AWAY] = args[i].split('-vs-');
let roleH = message.guild.roles.cache.find(r => r.name === HOME);
message.guild.channels.create(args[i], {
type: 'text',
permissionOverwrites: [
{
id: roleH.id,
allow: permAllowed,
deny: permDenied,
},
],
}).then((channel) => {
const categoryId = message.guild.channels.cache.find(cat => cat.name === 'FRENTE XXXX');
channel.setParent(categoryId);
})
因此,我在权限覆盖中的以下行中出现错误:
id: roleH.id,
错误获取
C:\Users\alexi\Desktop\Discord\OESTE-FWT\pikabot\src\pikabot.js:121
id: roleH.id,
^
TypeError: Cannot read property 'id' of undefined
at Client.<anonymous> (C:\Users\alexi\Desktop\Discord\OESTE-FWT\pikabot\src\pikabot.js:121:39)
我需要帮助以确定为什么“未定义”以及为什么我收到此错误。 提前致谢
编辑:roleH 分配后,我运行了一个 console.log(roleH) 并在第一次迭代中得到这个: 重要提示:我在这里使用的角色称为“boca”(这是一个拉丁团队)。很抱歉没有使用过巴塞罗那或皇家马德里。
Role {
guild: <ref *1> Guild {
members: GuildMemberManager {
cacheType: [class Collection extends Collection],
cache: [Collection [Map]],
guild: [Circular *1]
},
channels: GuildChannelManager {
cacheType: [class Collection extends Collection],
cache: [Collection [Map]],
guild: [Circular *1]
},
roles: RoleManager {
cacheType: [class Collection extends Collection],
cache: [Collection [Map]],
guild: [Circular *1]
},
presences: PresenceManager {
cacheType: [class Collection extends Collection],
cache: Collection(0) [Map] {}
},
voiceStates: VoiceStateManager {
cacheType: [class Collection extends Collection],
cache: Collection(0) [Map] {},
guild: [Circular *1]
},
deleted: false,
available: true,
id: '836369921939210250',
shardID: 0,
name: "pilo's server",
icon: null,
splash: null,
discoverySplash: null,
region: 'brazil',
memberCount: 3,
large: false,
features: [],
applicationID: null,
afkTimeout: 300,
afkChannelID: null,
systemChannelID: null,
embedEnabled: undefined,
premiumTier: 0,
premiumSubscriptionCount: 0,
verificationLevel: 'NONE',
explicitContentFilter: 'DISABLED',
mfaLevel: 0,
joinedTimestamp: 1619656895701,
defaultMessageNotifications: 'ALL',
systemChannelFlags: SystemChannelFlags { bitfield: 0 },
maximumMembers: 100000,
maximumPresences: null,
approximateMemberCount: null,
approximatePresenceCount: null,
vanityURLCode: null,
vanityURLUses: null,
description: null,
banner: null,
rulesChannelID: null,
publicUpdatesChannelID: null,
preferredLocale: 'en-US',
ownerID: '440862122201579520',
emojis: GuildEmojiManager {
cacheType: [class Collection extends Collection],
cache: Collection(0) [Map] {},
guild: [Circular *1]
}
},
id: '840675247035383890',
name: 'boca',
color: 2123412,
hoist: false,
rawPosition: 5,
permissions: Permissions { bitfield: 1983368913 },
managed: false,
mentionable: false,
deleted: false
}
答案 0 :(得分:0)
Bot 找不到从提供的消息中拆分出来的给定名称角色,请确保您拥有与 bot 正在寻找的名称相同的角色。