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

Discord.py如何获取指定用户的自定义状态?

discord.py 获取指定用户自定义状态方案

前置要求

  • 首先需要在Discord开发者后台的Bot管理页面,开启「Presence Intent」权限,否则无法获取用户的状态相关数据
  • 初始化Bot时必须正确配置意图参数,开启presences和members权限

代码实现

Bot初始化示例

import discord
from discord.ext import commands

# 配置必要权限意图
intents = discord.Intents.default()
intents.presences = True
intents.members = True

bot = commands.Bot(command_prefix="!", intents=intents)

获取自定义状态命令示例

@bot.command()
async def get_status(ctx, target: discord.User = None):
    # 未指定用户时默认获取命令发送者的状态
    user = target or ctx.author
    # 获取服务器内的成员对象,仅成员对象包含状态数据
    member = ctx.guild.get_member(user.id)
    if not member:
        await ctx.send("未在当前服务器找到目标用户")
        return
    # 遍历所有活动筛选自定义状态
    custom_status = None
    status_emoji = None
    for act in member.activities:
        if act.type == discord.ActivityType.custom:
            custom_status = act.name
            status_emoji = act.emoji
            break
    if custom_status:
        send_msg = f"用户自定义状态:{custom_status}"
        if status_emoji:
            send_msg += f" {status_emoji}"
        await ctx.send(send_msg)
    else:
        await ctx.send("该用户未设置自定义状态")

注意事项

  • 该功能仅可在服务器场景使用,私聊场景不存在服务器成员对象,无法获取其他用户的状态
  • 如果无法拿到状态,优先检查开发者后台的意图开关,以及Bot初始化时的意图配置是否正确
  • 自定义状态的有效期由Discord客户端控制,状态更新可能存在数秒的延迟

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:45:02