javascript - 当有人开始直播时添加角色
问题描述
所以我找到了一些代码来帮助我在某人开始流式传输时赋予他们特定的角色,并在他们停止流式传输时删除该角色。
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);
}
});
在大多数情况下,此代码有效,但由于某种原因,有些人没有改变他们的角色。他们在服务器中没有任何角色,并且机器人在列表中的位置比其他成员更高。
我还手动添加了该角色,一段时间后该角色被自动删除,即使该人仍在流式传输。
解决方案
我认为您应该从第三行中删除这部分:
oldMember.presence.status !== newMember.presence.status
因为旧的状态和新的状态永远不会一样。
如果您想确保用户正在流式传输,您可能需要检查这个:
newMember.presence.status?.activities[0].type !== 'STREAMING'
推荐阅读
- python - 检查遵循不同属性的对象的相等性
- python - 通过拆分索引名称将 1D pandas DataFrame 重新排列为 2d
- javascript - 空手道 API 测试 - 如何迭代读取多个 json 文件以用作单个场景的请求?
- javascript - kendoGrid 数据源 html 表
- google-sheets - 在所有谷歌电子表格页面中搜索
- java - Java帕斯卡三角初始化问题
- pyomo - 来自 model.display(filename) 的 Pyomo 输入数据
- android - React Native:AppState.addEventListener 在点击通知时在恢复时注册重复事件
- xcode - Cordova 诊断插件什么都不做
- python - 使用 Python 连接 Impala 数据库(thriftpy 错误)