首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试在我的discord机器人上实现仅限Patreon的命令/函数,我该如何实现?

尝试在我的discord机器人上实现仅限Patreon的命令/函数,我该如何实现?
EN

Stack Overflow用户
提问于 2019-06-20 07:19:04
回答 3查看 1.4K关注 0票数 0

我的不和谐机器人给了我的patreon支持者'Patreon‘的角色。这个角色是在我的主discord bot服务器上指定的。因此,现在我正在尝试编写一些命令,这些命令只对BOTS discord服务器中具有'Patreon‘角色的用户可用,我如何才能做到这一点?

有没有办法让我变得像-

Message.member.has(“Patreon角色”).in(“我的不一致服务器”)?

EN

回答 3

Stack Overflow用户

发布于 2019-06-20 10:53:29

让我们回顾一下完成此任务所需的任务。

  1. 获得“家庭行会”与您的用户和相应的守护角色。

查看公会中的和.

  • Find用户。

无论用户是否具有Patreon角色,请查看.

  • Check。

请参阅和.

你可以定义一个函数来帮助你解决这个问题,导出它并在你需要的地方需要它(或者在相关的范围内定义它),然后调用它来检查用户是否是你的Patreon支持者之一。

下面是这个函数的样子。

代码语言:javascript
复制
// 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;
}

然后,作为示例,在命令中使用此函数...

代码语言:javascript
复制
// Assuming 'message' is a Message.

if (!isSupporter(message.author)) {
  return message.channel.send(':x: This command is restricted to Patreon supporters.')
    .catch(console.error);
}
票数 1
EN

Stack Overflow用户

发布于 2019-06-20 07:41:55

代码语言:javascript
复制
message.member.roles.find('name', 'Patreon Role');//this returns either undefined or a role

这样做的目的是搜索users集合,查看是否具有"Patreon角色“

如果消息在同一台服务器上,则可以这样做

代码语言:javascript
复制
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”

但是,如果它们不在服务器上,它可能会崩溃(文档没有说明它是否返回错误或由于某种原因未定义),所以如果它确实崩溃了,您可以这样做

代码语言:javascript
复制
  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

还有这里

https://discord.js.org/#/docs/main/stable/class/Guild

票数 0
EN

Stack Overflow用户

发布于 2019-06-20 10:34:41

尝试给出一个完整的示例,假设这是在您的message事件中

代码语言:javascript
复制
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
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56677081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档