当前位置: 首页 > 面试题库 >

找出某人是否有角色

曾新立
2023-03-14
问题内容

我为服务器制作了一个简单的报价机器人,但管理员只希望mod
+人员能够添加报价以避免垃圾邮件。我去了文档并做了所有工作,但是我无法使它正常工作。这是我所拥有的:

//other code
else if (command === "addquote" && arg) {
    let adminRole = message.guild.roles.find("name", "Admin");
    let modRole = message.guild.roles.find("name", "Mod");

    if(message.member.roles.has(adminRole) || message.member.roles.has(modRole)){
        const hasArr = arr.some((el) => {
            return el.toLowerCase().replace(/\s/g, '') === arg.toLowerCase().replace(/\s/g, '');
        });

        if(hasArr){
            message.channel.send(arg.replace(/\s+/g,' ').trim() + " is already a Quote");
        } else {
            fs.appendFileSync('./Quotes.txt', '\r\n' + arg);
            message.channel.send("Quote added: " + arg);
            arr.push(arg);            
        }   
    }
}

非常挑剔。有时,如果用户具有mod角色,它通常会起作用。如果我做

console.log(message.memeber.roles.has(adminRole));
console.log(message.memeber.roles.has(modRole));

两者都将输出为false,但是会起作用吗?老实说,目前我还不知道。


问题答案:

discord.js api已更新,并且自.exists()弃用以来有一种更好的方法。

if (message.member.roles.some(role => role.name === 'Whatever')) {}

这好于.find()因为.find()返回角色对象(或未定义),然后将其转换为布尔值。该.some()方法默认返回一个布尔值。



 类似资料:
  • 问题内容: 作为测试的一部分,该系统应该确定用于打开网站的设备是移动设备还是普通台式机。 我不断收到错误: “ InvalidSelectorError:无法使用xpath表达式// * [包含(@class,is-mobile … 萤火虫的属性: 我的测试: 有人可以告诉我正确的XPath应该是什么吗? 问题答案: 您似乎缺少右括号和右括号: 更改此: 变成这个: 附带说明一下,请考虑到此代码还

  • 问题内容: 在我的Java应用程序中,我将文件重命名为String参数中提供的文件名。有一种方法 它基本上检查newName是否尚未被其他文件占用,因为我不想掩埋现有文件。 现在我想到,也许newName String不会表示有效的文件名。所以我想将此检查添加到方法中: 这显然不是正确的方法,因为在大多数情况下newFile尚不存在,因此尽管它 是 OKtoRename,但该函数返回false。

  • 我的代码中有这一点,但当我执行命令两次(名称命令、用户和角色)时,它不会返回这条消息。它一直在说“我将[角色名]添加到[用户]”

  • 在我的不和谐中,我有几个角色,比如“所有者”、“成员”和“监狱”。我希望bot只能由“所有者”角色访问,并希望命令如下所示:。监狱@user。然后机器人应该去掉“成员”角色,给他们“监狱”角色。 不和谐服务器最新更新请在此输入图像描述

  • 在Transform函数中编写NodeJS Transform stream时,我如何知道该块是最后一块还是没有任何新块出现。 所以我需要知道何时进入Stream的块结束,对由所有块组成的缓冲区进行一些处理,然后从流中推送处理过的数据。

  • 问题内容: 在SQL Server数据库中,我记录了人们的出生日期。是否有仅使用SQL来计算给定日期的人的年龄的简单方法? 使用 DATEDIFF(YEAR,DateOfBirth,GETDATE()) 不起作用,因为它仅查看日期的年份部分。例如 DATEDIFF(YEAR,‘2007年12月31日’,‘2008年1月1日’) 返回1。 问题答案: 查看本文:如何使用SQL代码计算一个人的年龄 这