You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用discord.js 14.7.1开发Discord机器人:游戏状态检测遇阻

解决Discord.js 14.7.1中presenceUpdate事件检测特定游戏的问题
  • 先确认机器人权限配置
    要获取用户状态,必须完成两项关键配置:

    1. 在Discord开发者门户的Bot页面,开启Privileged Gateway Intents下的Presence Intent和Server Members Intent
    2. 代码初始化客户端时声明对应的Intents:
    const { Client, GatewayIntentBits } = require('discord.js');
    const client = new Client({
      intents: [
        GatewayIntentBits.Guilds,
        GatewayIntentBits.GuildPresences,
        GatewayIntentBits.GuildMembers
      ]
    });
    
  • 正确监听presenceUpdate并检测游戏
    事件接收oldPresence和newPresence两个参数,从newPresence的活动列表中筛选「正在玩」的游戏,再匹配目标名称:

    client.on('presenceUpdate', (oldPresence, newPresence) => {
      // 找到类型为"PLAYING"的活动(类型值为0)
      const playingActivity = newPresence.activities.find(act => act.type === 0);
      if (!playingActivity) return;
    
      // 替换成你要检测的游戏名称,注意大小写和特殊字符
      const targetGame = "目标游戏名称";
      if (playingActivity.name === targetGame) {
        // 这里添加你的业务逻辑,比如记录日志、发送频道提醒
        console.log(`${newPresence.user.tag} 正在游玩 ${targetGame}`);
      }
    });
    
  • 常见问题排查

    • 用户设置隐身状态时,机器人无法获取其Presence数据
    • 游戏名称必须完全匹配,部分游戏会显示英文原名而非中文,需确认实际显示名称
    • 确保机器人在目标服务器内可见(无需特殊权限,但需加入服务器)

内容的提问来源于stack exchange,提问作者Anwar Bounagui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 00:35:26