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

如何使用Discord.py获取Discord用户的个人资料徽章?

解决discord.py获取用户徽章为空的问题

问题根源

你的代码存在两个核心问题:

  1. 依赖字符串替换处理徽章数据,逻辑脆弱且无法适配discord.py的对象结构
  2. 未刷新用户数据,本地缓存的User/Member对象可能未包含完整的徽章信息

修复方案

使用discord.py v2.x的标准API获取并处理徽章,同时强制刷新用户数据确保准确性:

完整代码示例

import discord

async def get_user_badges(message):
    if not message.mentions:
        return []
    
    # 获取第一个提及的用户
    target_user = message.mentions[0]
    
    # 强制刷新用户数据,确保获取最新的徽章信息
    try:
        target_user = await target_user.fetch()
    except (discord.Forbidden, discord.HTTPException):
        # 无权限获取或网络异常时返回空列表
        return []
    
    # 获取所有激活的公开徽章枚举对象
    active_badge_flags = target_user.public_flags.all()
    
    # 转换为可读名称列表(可直接用于Embed展示)
    readable_badges = []
    for flag in active_badge_flags:
        # 将枚举名称转换为友好格式,比如"VERIFIED_BOT_DEVELOPER" → "Verified Bot Developer"
        friendly_name = flag.name.replace("_", " ").title()
        readable_badges.append(friendly_name)
    
    # 若需要返回徽章枚举对象(用于关联图标等自定义逻辑),直接返回active_badge_flags即可
    return readable_badges

关键说明

  • await target_user.fetch():必须调用此方法刷新用户数据,避免缓存数据缺失徽章信息
  • public_flags.all():直接返回当前用户激活的所有公开徽章枚举成员,无需字符串截取
  • 错误处理:捕获权限不足和网络异常,避免程序崩溃

关联徽章图标示例

如果需要在Embed中展示徽章图标,可以建立名称与CDN图标的映射:

# 示例:Discord官方徽章图标映射(可根据需要补充)
BADGE_ICON_MAP = {
    "Staff": "https://cdn.discordapp.com/emojis/749289660875962428.png",
    "Partner": "https://cdn.discordapp.com/emojis/749289661230551060.png",
    "Hypesquad Events": "https://cdn.discordapp.com/emojis/749289661016760320.png",
    "Bug Hunter Level 1": "https://cdn.discordapp.com/emojis/749289660991502377.png",
    "Verified Bot Developer": "https://cdn.discordapp.com/emojis/749289661396758548.png"
}

# 在生成Embed时使用
badges = await get_user_badges(message)
embed = discord.Embed(title="用户徽章")
for badge in badges:
    icon_url = BADGE_ICON_MAP.get(badge)
    if icon_url:
        embed.add_field(name=badge, value=f"![{badge}]({icon_url})", inline=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:57:06