不和谐 API |用户标记 return 个徽章

Discord API | User Flags return badges

我正在使用 Node.JS 和 Discords OAuth2 API。当我 return /users/@me 它 return 用户反对。示例:

{
  "id": "80351110224678912",
  "username": "Nelly",
  "discriminator": "1337",
  "avatar": "8342729096ea3675442027381ff50dfe",
  "verified": true,
  "email": "nelly@discord.com",
  "flags": 64,
  "premium_type": 1,
  "public_flags": 64
}

现在我在 "public_flags" 整数之后,它在 Discords 上是“64” API 参考每个标志都有一个与示例数字不同的左移运算符,然后它等于 (1 << 6 : House Bravery),如果一个用户有多个徽章,它会将总数加在一起。标记 ID:

0   None
1 << 0  Discord Employee
1 << 1  Partnered Server Owner
1 << 2  HypeSquad Events
1 << 3  Bug Hunter Level 1
1 << 6  House Bravery
1 << 7  House Brilliance
1 << 8  House Balance
1 << 9  Early Supporter
1 << 10 Team User
1 << 12 System
1 << 14 Bug Hunter Level 2
1 << 16 Verified Bot
1 << 17 Early Verified Bot Developer

我的问题是我如何能够完成所有包含标志 ID 的数学运算,然后计算出用户拥有的徽章,或者是否有更简单的方法将数字从总数转换为徽章用户有。 谢谢:)

任何想在此处获得此问题答案的人:D

首先你要为上面分配的徽章计算出所有的左移操作。我都在这里完成了!

const Discord_Employee = 1;
const Partnered_Server_Owner = 2;
const HypeSquad_Events = 4;
const Bug_Hunter_Level_1 = 8;
const House_Bravery = 64;
const House_Brilliance = 128;
const House_Balance = 256;
const Early_Supporter = 512;
const Bug_Hunter_Level_2 = 16384;
const Early_Verified_Bot_Developer = 131072;

然后您需要从请求示例中获取 public_flags 整数:const flags = user.public_flags;

之后我们可以检查每个徽章是否存在于 flags 位整数中。 (我不擅长解释这个)

if((flags & Discord_Employee) == Discord_Employee){
   var badge_Discord_Employee = "true";
}
else{
  var badge_Discord_Employee = "false";
}

重复此代码,将 Discord_Employee 替换为您要检查的下一个徽章。