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

如何用Python调用Discord API获取指定用户的活动与状态

通过Python调用Discord API获取指定用户的活动与状态

你的代码调用的/activities接口返回的是批量用户的活动记录摘要,并非单个用户的完整活动状态,所以输出和预期的包含details、state等字段的格式不符。要实现目标,需要调用正确的接口并指定目标用户。

问题根源

  • /api/v9/activities接口仅返回精简的活动记录列表,不包含你需要的详细活动字段
  • 获取单个用户的完整活动状态,需要使用机器人账号(用户token调用API违反Discord服务条款),且机器人需具备相应权限并加入目标用户所在服务器

解决方案

  1. 准备工作:

    • 在Discord开发者门户为机器人开启Presence Intent和Server Members Intent权限
    • 确保机器人已加入目标用户所在的服务器
    • 使用机器人token,格式为Bot 你的机器人token
  2. 示例代码:

import requests

# 替换为你的机器人token(注意前缀"Bot ")
TOKEN = "Bot YOUR_BOT_TOKEN"
# 替换为目标用户ID和其所在的服务器ID
USER_ID = "TARGET_USER_ID"
GUILD_ID = "TARGET_GUILD_ID"
BASE_URL = "https://discord.com/api/v9"

headers = {"Authorization": TOKEN}
# 调用服务器成员接口获取用户详细信息(含活动状态)
response = requests.get(f"{BASE_URL}/guilds/{GUILD_ID}/members/{USER_ID}", headers=headers)

if response.status_code == 200:
    member_info = response.json()
    # 提取并格式化活动数据
    for activity in member_info.get("activities", []):
        target_activity = {
            "details": activity.get("details"),
            "state": activity.get("state"),
            "name": activity.get("name"),
            "type": activity.get("type"),
            "url": activity.get("url")
        }
        print(target_activity)
else:
    print(f"请求失败:状态码{response.status_code},内容:{response.text}")

补充说明

  • 若无法获取服务器ID,推荐使用Discord网关(Gateway)连接,监听PRESENCE_UPDATE事件获取实时活动状态
  • 活动type字段对应类型:0=游戏,1=直播,2=听歌,3=观看,4=自定义状态,5=竞赛

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:12:32