【问题标题】:Adding Role When Someone Starts Livestreaming当有人开始直播时添加角色
【发布时间】:2020-10-03 16:50:04
【问题描述】:

所以我找到了一些代码来帮助我在某人开始流式传输时为其指定特定角色,并在他们停止流式传输时删除该角色。

client.on('presenceUpdate', (oldMember, newMember) => {
    const guild = newMember.guild;
    const streamingRole = guild.roles.find(role => role.id === 'streaming role');

    if (newMember.user.bot || newMember.presence.clientStatus === 'mobile' || oldMember.presence.status !== newMember.presence.status) return;

    const oldGame = oldMember.presence.game ? oldMember.presence.game.streaming: false;
    const newGame = newMember.presence.game ? newMember.presence.game.streaming: false;

    if (!oldGame && newGame) {         // Started playing.
      newMember.addRole(streamingRole)
        .then(() => console.log(`${streamingRole.name} added to ${newMember.user.tag}.`))
        .catch(console.error);
    } 

    else if (oldGame && !newGame) {  // Stopped playing.
      newMember.removeRole(streamingRole)
        .then(() => console.log(`${streamingRole.name} removed from ${newMember.user.tag}.`))
        .catch(console.error);
    }
});

在大多数情况下,此代码有效,但由于某种原因,有些人的角色没有改变。他们一开始在服务器中没有任何角色,并且机器人在列表中的位置比其他成员更高。

我还手动添加了该角色,一段时间后该角色被自动删除,即使该人仍在流式传输。

【问题讨论】:

  • 我不明白第 3 行的这一部分是干什么用的:oldMember.presence.status !== newMember.presence.status

标签: javascript node.js discord discord.js


【解决方案1】:

假设您使用的是 Discord.js v11,您的代码看起来可以正常工作,除了您尝试查找角色的那一行。

使用这个const streamingRole = guild.roles.find(role => role.id === 'streaming role'); 意味着您正在尝试查找与其名称相同的角色ID,这显然是不正确的。

你可能想用这个替换它:

const streamingRole = guild.roles.find(role => role.name === 'streaming role');

【讨论】:

  • 其实那部分我是从ID改成那个名字来隐藏ID的。第三行我也不确定。我发现有人要求为玩新游戏的人添加角色。我必须找出如何修改它以使用流媒体。
  • @QuazArxx 添加了另一个答案,希望它能帮助您解决问题
【解决方案2】:

我认为你应该从第三行删除这部分:

oldMember.presence.status !== newMember.presence.status

因为旧的状态和新的状态永远不会相同。

如果您想确保用户正在流式传输,您可能需要检查此项:

newMember.presence.status?.activities[0].type !== 'STREAMING'

【讨论】:

  • 那么我应该把你说的第二个代码作为底部的 if 语句来添加或删除角色,还是代替你说要删除的第一个代码?
  • 你应该用我发送的新代码替换旧代码
  • 但是,如果他们确实开始流式传输并且不向他们添加角色,那么等待不会返回吗?
  • @QuazArxx Wooops,请原谅我的错字,它现在应该可以工作了^^'
  • 所以在更改代码后,机器人实际上现在无法正常工作,因此之前的代码正在帮助它工作
猜你喜欢
  • 2021-05-01
  • 1970-01-01
  • 2020-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-22
  • 2020-11-21
  • 2017-08-23
相关资源
最近更新 更多