我的不和谐机器人给了我的patreon支持者'Patreon‘的角色。这个角色是在我的主discord bot服务器上指定的。因此,现在我正在尝试编写一些命令,这些命令只对BOTS discord服务器中具有'Patreon‘角色的用户可用,我如何才能做到这一点?
有没有办法让我变得像-
Message.member.has(“Patreon角色”).in(“我的不一致服务器”)?
发布于 2019-06-20 10:53:29
让我们回顾一下完成此任务所需的任务。
查看公会中的和.
无论用户是否具有Patreon角色,请查看.
请参阅和.
你可以定义一个函数来帮助你解决这个问题,导出它并在你需要的地方需要它(或者在相关的范围内定义它),然后调用它来检查用户是否是你的Patreon支持者之一。
下面是这个函数的样子。
// Assuming 'client' is the instance of your Discord Client.
function isSupporter(user) {
const homeGuild = client.guilds.get('idHere');
if (!homeGuild) return console.error('Couldn\'t find the bots guild!');
const member = homeGuild.member(user);
if (!member) return false;
const role = member.roles.find(role => role.name === 'Patreon');
if (!role) return false;
return true;
}然后,作为示例,在命令中使用此函数...
// Assuming 'message' is a Message.
if (!isSupporter(message.author)) {
return message.channel.send(':x: This command is restricted to Patreon supporters.')
.catch(console.error);
}发布于 2019-06-20 07:41:55
message.member.roles.find('name', 'Patreon Role');//this returns either undefined or a role这样做的目的是搜索users集合,查看是否具有"Patreon角色“
如果消息在同一台服务器上,则可以这样做
client.guild.find('name','My Discord Server').member(message.author).roles.find('name', 'Patreon Role'); //this also returns undefined or a role显然,第二个选项很长,但基本上是在机器人所在服务器中搜索名为“My Discord”的服务器,然后它发现message.author用户的GuildMember表单是可解析的,然后它在它们的角色中搜索角色“Patreon role”
但是,如果它们不在服务器上,它可能会崩溃(文档没有说明它是否返回错误或由于某种原因未定义),所以如果它确实崩溃了,您可以这样做
client.guild.find('name','My Discord Server').members.find('id', message.author.id).roles.find('name', 'Patreon Role'); //this also returns undefined or a role你可以在这里阅读更多内容:https://discord.js.org/#/docs/main/stable/class/User
还有这里
https://discord.js.org/#/docs/main/stable/class/Client
还有这里
发布于 2019-06-20 10:34:41
尝试给出一个完整的示例,假设这是在您的message事件中
if (message.member.roles.find(r => r.name === 'Patreon') == undefined &&
commandIsExclusive || message.guild.id !== 'this-id-for-BOTS-server') {
// Don't allow them in here
}https://stackoverflow.com/questions/56677081
复制相似问题