作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一个问题,我的机器人只能通过许可进行识别,我什至确保我的 ID 位于 !message.author.id ==
所在的位置。我从 !message.author.id
中删除了 !
,我的机器人仍然依赖于该权限
我试过了 - 删除!来自 !message.author.id
- 在返回消息后添加else
- 寻找类似问题 - 并搜索了 Discord.JS 文档。
if(!message.author.id ==`329023088517971969` || !message.member.hasPermission(['MANAGE_GUILD'])) return message.channel.send(`You don't have the permissions to do this!`)
<code here>
我希望输出是,如果机器人发现我的 ID(作者)与后面的值相同,它会让我通过,或者如果两个语句都为真,它会让我通过,或者如果 hasPermission是真的,它会让我通过。实际结果是它只依赖hasPermission而忽略作者ID。
基本上机器人应该:如果作者的 ID 等于代码中显示的 ID,则在 if()
之后运行代码,或者成员具有以下权限
最佳答案
当使用所有否定条件时,您应该使用 logical AND运算符 (&&
),而不是 logical OR运算符(||
)。
if (message.author.id !== '329023088517971969' && !message.member.hasPermission('MANAGE_GUILD')) {
return message.channel.send(':x: Insufficient permission.')
.catch(console.error);
}
在英语中,这段代码基本上是说“如果这不是作者的 ID 并且他们没有权限标志,请停止。”从逻辑上讲,它比“如果这不是作者的 ID 或他们没有权限标志”更有意义,因为如果一个为 true,另一个为 false,它就会阻止您。
考虑这个例子:
const str = 'abcd';
const arr = ['foo'];
if (str !== 'abcd' || !arr.includes('bar')) console.log('This is WRONG.');
// false OR true OUTPUTS true
if (str !== 'abcd' && !arr.includes('bar')) console.log('This is correct (you won\'t see this).');
// false AND true OUTPUTS false
关于javascript - 如何让机器人通过 ID 或权限来识别您的身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56921064/
我是一名优秀的程序员,十分优秀!