webhook和角色/权限思想存在问题



我用discord.js开发了一个机器人,它使用msg.member.hasPermission("ADMINISTRATOR")msg.member.roles.cache.has(teacherRoleID)之类的东西。一切都很好,直到我尝试了webhook。通过添加这两行:

client.on('ready', () => {
client.user.setStatus("online")
client.user.setActivity("!help", {
type: "PLAYING",
});
superConsole(`Logged in as ${client.user.tag} in ${client.guilds.size} guilds!`);

const hook = new Discord.WebhookClient("ID", "secret token"); // THESE
hook.send("I am now alive!");                                 // LINES
});

(btw超级控制台是一个函数(从那以后,该程序不再工作,并且总是返回相同的错误:(node:20736) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'hasPermission' of null&(node:20736) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'roles' of null

当我删除webhook的这两行时,它又起作用了。为什么?我不明白。

权限和角色在消息侦听器中:

client.on('message', async msg => {
if (msg.member.hasPermission('ADMINISTRATOR') {
// some stuff here
}
if (msg.member.roles.cache.has(teacherRoleID) {
// some stuff here
}
});

问题是,当您从hook发送消息时,它会触发客户端的message事件。因为webhook不是公会成员,所以对于从webhook发送的消息,msg.member将获得undefined

你必须使用这样的东西:

if (msg.member) {
if (msg.member.permissions.has('ADMINISTRATOR') {
// some stuff here
}
if (msg.member.roles.cache.has(teacherRoleID) {
// some stuff here
}
}

最新更新