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

如何在PHP中通过Discord用户ID获取对应徽章名称?

解决Discord用户ID转徽章名称的问题

Discord返回的public_flags是位掩码数值,每个徽章对应一个2的幂次常量,通过位运算可以判断用户拥有哪些徽章。以下是实现步骤和修改后的代码:

核心思路

  1. 定义官方公开的徽章与位掩码映射表
  2. 解析API返回的用户数据,提取public_flags字段
  3. 通过位与运算判断每个徽章是否被启用,收集对应名称
  4. 将徽章数组加入结果并输出JSON

修改后的完整PHP代码

<?php
error_reporting(0);

// Discord public_flags 与徽章名称的官方映射表
$badgeMap = [
    1 << 0 => 'DISCORD_EMPLOYEE',
    1 << 1 => 'PARTNERED_SERVER_OWNER',
    1 << 2 => 'HYPESQUAD_EVENTS',
    1 << 3 => 'BUGHUNTER_LEVEL_1',
    1 << 6 => 'HOUSE_BRAVERY',
    1 << 7 => 'HOUSE_BRILLIANCE',
    1 << 8 => 'HOUSE_BALANCE',
    1 << 9 => 'EARLY_SUPPORTER',
    1 << 10 => 'TEAM_USER',
    1 << 14 => 'BUGHUNTER_LEVEL_2',
    1 << 16 => 'VERIFIED_BOT',
    1 << 17 => 'EARLY_VERIFIED_BOT_DEVELOPER',
    1 << 18 => 'DISCORD_CERTIFIED_MODERATOR',
    1 << 22 => 'ACTIVE_DEVELOPER',
];

$discordId = $_GET["discord_id"];
$token = ""; // 填入你的Bot Token
$url = "https://discord.com/api/users/{$discordId}";

$options = [
    'http' => [
        'header'  => "Authorization: Bot {$token}\r\n",
        'method'  => 'GET', // 修正原代码拼写错误:methods → method
    ],
];

$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
if ($response === false) {
    die('Error fetching data from Discord API');
}

// 解析用户数据并提取徽章
$userData = json_decode($response, true);
$badges = [];

foreach ($badgeMap as $flagValue => $badgeName) {
    if (($userData['public_flags'] & $flagValue) === $flagValue) {
        $badges[] = $badgeName;
    }
}

// 加入徽章数组并输出
$userData['badges'] = $badges;
header('Content-Type: application/json');
echo json_encode($userData, JSON_PRETTY_PRINT);
?>

关键说明

  • 修正了原代码中HTTP请求方法的拼写错误(methods改为method),避免请求失败
  • 位与运算&用于判断用户的public_flags是否包含对应徽章的位标识
  • 输出结果会包含你期望的badges数组格式,例如:
    "badges": [
        "HOUSE_BRAVERY",
        "EARLY_VERIFIED_BOT_DEVELOPER",
        "ACTIVE_DEVELOPER"
    ]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:08:19