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

Discord API 通过public_flags获取用户徽章列表(JS非discord.js环境)

实现方案

核心原理

Discord返回的public_flags是32位整数类型的位运算字段,每个徽章对应一个独立的比特位,通过按位与运算即可判断用户是否持有对应徽章,无需依赖discord.js等第三方库。

完整代码实现

// 徽章与对应位掩码的映射表
const DISCORD_BADGE_FLAGS = {
  "Discord Employee": 1 << 0,
  "Partnered Server Owner": 1 << 1,
  "Hypesquad Events": 1 << 2,
  "Bug Hunter Level 1": 1 << 3,
  "House Bravery": 1 << 6,
  "House Brilliance": 1 << 7,
  "House Balance": 1 << 8,
  "Early Supporter": 1 << 9,
  "Team User": 1 << 10,
  "Bug Hunter Level 2": 1 << 14,
  "Verified Bot": 1 << 16,
  "Early Verified Bot Developer": 1 << 17,
  "Discord Certified Moderator": 1 << 18,
  "Bot HTTP Interactions": 1 << 19,
  "Active Developer": 1 << 22
}

/**
 * 从public_flags字段提取用户徽章列表
 * @param {number|null|undefined} publicFlags 从Discord API获取的用户public_flags字段值
 * @returns {string[]} 用户持有徽章的名称数组
 */
function getUserBadges(publicFlags) {
  if (!publicFlags) return []
  const badges = []
  for (const [badgeName, flagMask] of Object.entries(DISCORD_BADGE_FLAGS)) {
    if ((publicFlags & flagMask) !== 0) {
      badges.push(badgeName)
    }
  }
  return badges
}

使用示例

你从Discord用户接口拿到用户数据后,直接传入public_flags字段即可:

// 示例:从Discord API返回的用户数据
const discordUser = {
  id: "xxx",
  username: "xxx",
  public_flags: 4325440 // 对应示例输出的组合值
}

const userBadges = getUserBadges(discordUser.public_flags)
console.log(userBadges)
// 输出:["House Bravery", "Partnered Server Owner", "Early Verified Bot Developer"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:48:00