我有一个问题,我看到api的不和谐使我们所有的徽章,即如果我们是工作人员+炒股,它的数字"5“。然而,我想知道如何做一个可靠的计算,给出徽章的真实结果(Ex:那5给出了“员工和Hypesquad事件”这个词。)
下面是api代码:
{
"id": "N/A",
"username": "developer",
"avatar": "N/A",
"discriminator": "0001",
"public_flags": 644,
"banner": null,
"banner_color": null,
"accent_color": null
}如您所见,public_flags = 644
真旗:
Discord_Employee = 1;
Partnered_Server_Owner = 2;
HypeSquad_Events = 4;
Bug_Hunter_Level_1 = 8;
House_Bravery = 64;
House_Brilliance = 128;
House_Balance = 256;
Early_Supporter = 512;
Bug_Hunter_Level_2 = 16384;
Early_Verified_Bot_Developer = 131072;必须知道,在实际情况下,使用644的用户包含下列徽章:
Early_Supporter +华晨+
计算系统必须在php中完成。
感谢大家,
发布于 2021-11-05 13:29:10
您可以使用按位操作:
$badges = [
1 => 'Discord_Employee',
2 => 'Partnered_Server_Owner',
4 => 'HypeSquad_Events',
8 => 'Bug_Hunter_Level_1'
];
$flags = 6;
var_dump(array_filter($badges, function($value, $key) use($flags) {
return ($key & $flags) > 0;
}, ARRAY_FILTER_USE_BOTH));这段代码打印
array(2) {
[2]=>
string(22) "Partnered_Server_Owner"
[4]=>
string(16) "HypeSquad_Events"
}发布于 2021-11-08 10:58:56
我这样做的方式是通过nodejs使用不和谐is / express处理不和谐的任务,只需用PHP处理数据,nodejs应用程序就可以输出JSON格式,这样我就能够做到这一点,但是Pavel Třupek的脚本要好得多,如果您只获得用户对象,就像一个检查器,在我的情况下,我使用了更多的数据,而不仅仅是标志,所以这种方式是为我的使用优化的。
https://stackoverflow.com/questions/69853711
复制相似问题