javascript - 无法弄清楚使用变量的语法,如果用户有角色,我必须搜索
问题描述
到目前为止,我的代码正确地收集了我要搜索的服务器 ID、我要查找的角色 ID 以及邀请机器人的公会所有者 ID。
我需要它做的是检查它是否OwnerId
具有我之前在服务器中提到的角色。
这是我到目前为止所得到的,但我觉得我错过了一些简单的东西。
/// adding a guild to the database upon invite
bot.on('guildCreate', async (guild) => {
// Guild the user needs to have the role in
let guildA = process.env.BOT_GUILD;
console.log(guildA);
// Role that the user needs
let requiredRole = process.env.PAID_ROLE;
console.log(requiredRole);
// Member object of the user in guildA
let guildOwner = await guild.members.fetch(guild.ownerID);
let OwnerId = guildOwner.guild.ownerID;
console.log(OwnerId);
//Check if they have the role
if (guildA.OwnerId.cache.has(`${requiredRole}`))
我也尝试添加.roles
afterOwnerId
和 before .cache
,但出现错误。
如果有人有更多关于这种事情如何运作的信息,那就太好了,我知道谷歌到底要做什么。
解决方案
OwnerId
不会有任何角色,因为它只是雪花/ID。如果您想检查公会所有者是否具有 ID 的角色process.env.PAID_ROLE
(如果它是一个 ID 而不仅仅是一个角色名称......),您可以将所有者作为成员获取,并检查他们roles
的 ' 是否缓存has
此 ID:
bot.on('guildCreate', async (guild) => {
// guild the user needs to have the role in
// do you use it anywhere?!
let guildA = process.env.BOT_GUILD;
// member object of the owner of the guild the bot just joined
let guildOwner = await guild.members.fetch(guild.ownerID);
// check if that guildOwner has the role required
let ownerHasPaidRole = guildOwner.roles.cache.has(process.env.PAID_ROLE);
if (ownerHasPaidRole)
console.log(`Woohoo, ${guildOwner} has the required role`);
});
编辑:如果您想获取属于您的公会 ID 的成员process.env.BOT_GUILD
,您将需要使用YOUR_GUILD#members.fetch(guild.ownerID)
. 要通过其 ID 获取您的公会,您也可以获取它。bot.guilds
返回机器人当前正在处理的所有公会,因此您可以使用它的fetch()
方法
bot.on('guildCreate', async (guild) => {
// guild the user needs to have the role in
let myGuild = await bot.guilds.fetch(process.env.BOT_GUILD);
// get the member object of the owner on myGuild
let guildOwner = await myGuild.members.fetch(guild.ownerID)
if (!guildOwner)
return console.log(`Oops, ${guild.owner} is not a member of your server.`)
// check if that guildOwner has the role required on myGuild
let ownerHasPaidRole = guildOwner.roles.cache.has(process.env.PAID_ROLE);
if (ownerHasPaidRole)
console.log(`Woohoo, ${guildOwner} has the required role`);
});
推荐阅读
- firebase-admin - Firebase admin auth list users 不会返回项目中的所有用户
- python - 使用 hybrid_property 对从其他列的值派生的时间列进行排序
- sapui5 - UI5 NumericHeader 为错过的属性引发错误
- php - 无法将数据从表传输到另一个 mysql php angular
- html - 如何运行参数值为 HTML 的 powershell 脚本
- c# - 我应该在控制台应用程序中使用 System.Drawing 吗?
- datepicker - SwiftUI - 选择选取器时关闭键盘
- swift - 如何修复 onReceive 方法调用的这个 Swift 编译器错误?
- c# - VSTO Office 365:打开 Excel 文档时出错
- android - 在多模块应用程序中使用 koin