首页 > 解决方案 > 状态活动中的 discord.js 自动角色

问题描述

我正在为我的服务器编写一个机器人,我希望机器人读取所有成员的状态,如果他们有虚荣链接,则给他们一个特定的角色。我从头开始编写此代码,但似乎无法正常工作。这是代码:

client.on('presenceUpdate', async (oldPresence, newPresence) => {
  const role = newPresence.guild.roles.cache.get("844047538797281310");
  const member = newPresence.member


  if (member.user.presence.activities[0]?state.includes( ".gg/moonxile" || "discord.gg/moonxile" )) {
    return newPresence.member.roles.add(role)
  } else {
    if(member.roles.cache.has(role.id)) {
      newPresence.member.roles.remove(role)
    }
  }
})

我对编码有点陌生,我无法说出我哪里出错了

标签: node.jsdiscorddiscord.jsstatus

解决方案


起初.includes js 方法不支持其中的条件 而 member.user.presence.activities 是活动数组,状态是它的属性,所以代码应该看起来像

client.on('presenceUpdate', async (oldPresence, newPresence) => {
    const role = newPresence.guild.roles.cache.get("844047538797281310");
    const member = newPresence.member
    const activities = member.user.presence.activities[0];
  
    if (activities && (activities.state.includes( ".gg/moonxile" ) || activities.state.includes("discord.gg/moonxile" ))) {
      return newPresence.member.roles.add(role)
    } else {
      if(member.roles.cache.get(role.id)) {
        newPresence.member.roles.remove(role)
      }
    }
})

推荐阅读