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
相关产品推荐
相关产品推荐

