0

我正在开发一个机器人,在设定的时间间隔内,就像每小时机器人会选择一个随机用户并从中删除一个角色,它将使用侧面的定位来执行此操作。问题是我在 Discord.JS 中真的找不到一个函数,它有一个公会成员的位置属性。

我已经尝试过寻找其他可以执行此操作的机器人并尝试模仿它们,但我没有找到任何东西。我仔细检查了文档,但没有找到任何东西。

      var thatguild = message.guild.id.find(`576463944298790929`);
      thatguild.fetchMembers();

    setInterval(function() {
      let sizes = thatguild[Math.floor(Math.random() * thatguild.members.size())];
      if(thatguild.member.id == `329023088517971969` || `538628353079508992`)
      return(thatguild.member.removeRole('576464298088333323'))
    }, 1000) 

我期望一个机器人通过位置随机选择一个用户,并从成员中删除一个角色。我实际得到的是代码,无法知道它是否有效。

4

1 回答 1

0

解释:

如果我们想完成你想要的,让我们来看看我们需要做什么。

  1. 获得所需的公会。
    • 客户正在处理的公会集合(GuildStore在 master 中)可用Client.guilds.
    • 要通过键查找值,请使用Map.get().
    • 要通过另一个属性或表达式测试来查找值,请使用Collection.find().
    • 要简单地使用在message事件中发送消息的公会,请使用message.guild.
  2. 获得所需的角色。
    • GuildMemberRoleStore客户正在处理的公会(在主人)中的角色集合可通过Guild.roles.
    • 请参阅前面列出的选项以从集合中获取值。
  3. 随机选择一个成员。
    • 公会成员的集合(GuildMemberStore在 master 中)可通过Guild.members.
    • 在选择成员之前,可能的选择需要仅限于具有角色的人,因此请使用Collection.filter().
    • 要从集合中选择一个随机值,请使用Collection.random().
  4. 从成员中删除角色。
  5. 设置一个间隔。
    • 要设置间隔,请使用setInterval()
    • 如果出现问题,请将其分配给变量,以便稍后清除。

代码:

function roleRoulette(guild, role) {
  const possible = guild.members.filter(m => m.roles.has(role.id));
  if (possible.size === 0) return clearInterval(interval);

  const member = possible.random();

  member.removeRole(role)
  // MASTER: member.roles.remove(role)
    .then(() => console.log(`Removed ${role.name} from ${member.tag}.`))
    .catch(err => {
      console.error(err);
      clearInterval(interval);
    });
}

const guild = client.guilds.get('576463944298790929');
if (!guild) return;

const role = guild.roles.get('576464298088333323');
if (!role) return;

const interval = setInterval(roleRoulette(), 60 * 1000, guild, role);

Discord.js 文档:

稳定的
主人

于 2019-05-13T21:09:59.097 回答