Получить общее количество участников в Discord, используя переполнение стека

У меня есть сервер Discord с 1361 участником, и на моем веб-сайте я хочу отобразить общее количество присоединившихся пользователей.

Я выяснил, как получить всех онлайн-пользователей на сервере, используя:

   <?php

$jsonIn = file_get_contents('https://discordapp.com/api/guilds/356230556738125824/widget.json');
$JSON = json_decode($jsonIn, true);

$membersCount = count($JSON['members']);

echo "Number of members: " . $membersCount;
?>

Что я должен сделать по-другому, чтобы получить общее количество ВСЕХ пользователей, которые присоединились к серверу, а не просто показать участников онлайн?

0

Решение

Теперь я понимаю, что возрождаю довольно старую тему, но думаю, что некоторые все еще могут использовать ответ. Как указал jrenk, вы должны вместо этого получить доступ https://discordapp.com/api/guilds/356230556738125824/members,

Ваш 404: Unauthorized Происходит от того, что вы, как вы уже догадались, не авторизованы.
Если вы создали бота, это довольно просто: просто добавьте заголовок запроса Authorization: Bot YOUR_BOT_TOKEN_HERE, Если вы используете обычную учетную запись Discord, вся проблема немного сложнее:
Сначала вы должны будете отправить POST запросить https://discordapp.com/api/auth/login и установить тело в {"email": "EMAIL_HERE", "password": "PASSWORD_HERE"},
Вы получите ответ с параметром token, Сохраните этот токен, он понадобится вам позже. НО:

НИКОГДА, НИКАКИХ ОБСТОЯТЕЛЬСТВ покажите кому-нибудь этот токен, так как он эквивалентен вашим учетным данным!

С этим токеном вы можете отправить POST запрос по тому же адресу: https://discordapp.com/api/auth/login, но теперь добавьте заголовок Authorization: YOUR_BOT_TOKEN_HERE, Обратите внимание на отсутствующий «Бот» в начале.

Кроме того, что вы не должны забывать:

Если вы не добавите параметр ?limit=MAX_USERS, вы получите только первый член гильдии. Взглянуть Вот чтобы увидеть детали.

1

Другие решения

Вы должны посчитать количество онлайн-членов
вот рабочий код

<?php
$members = json_decode(file_get_contents('https://discordapp.com/api/guilds/356230556738125824/widget.json'), true)['members'];
$membersCount = 1;
foreach ($members as $member) {
if ($member['status'] == 'online') {
$membersCount++;
}
}
echo "Number of members: " . $membersCount;
?>
0

Сначала создайте дискорд-бота и получите токен, смотрите следующий URL:
https://github.com/reactiflux/discord-irc/wiki/Creating-a-discord-bot-&-Получение-а-маркер

Как отметил @ 2Kreeper, не раскрывайте свой токен публично.

Затем используйте следующий код, заменив «введите бот-маркера здесь» а также «введите цеховой-ID здесь«с вашей собственной информацией:

<?php

$json_options = [
"http" => [
"method" => "GET",
"header" => "Authorization: Bot enter-bot-token-here"]
];

$json_context = stream_context_create($json_options);

$json_get     = file_get_contents('https://discordapp.com/api/guilds/enter-guild-id-here/members?limit=1000', false, $json_context);

$json_decode  = json_decode($json_get, true);

echo '<h2>Member Count</h2>';
echo count($json_decode);

echo '<h2>JSON Output</h2>';
echo '<pre>';
print_r($json_decode);
echo '</pre>';

?>
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector