В таком случае пишите жалобу в этот раздел- https://forum.vimeworld.ru/forum/73-%D0%B6%D0%B0%D0%BB%D0%BE%D0%B1%D1%8B-%D0%BD%D0%B0-%D0%BF%D0%B5%D1%80%D1%81%D0%BE%D0%BD%D0%B0%D0%BB/
Во время бана сможете играть на другом аккаунте, т.к. разрешено иметь 2 игровых аккаунта :)
Желаемая должность - Модератор.
Время игры на сервере (должно быть не менее наигранных 48 часов) - 4 дня.
Ник в игре - Sinsemilla.
Настоящее имя - Михаил.
Возраст (Модератор - с 16; Хелпер - с 14) - 16 лет.
Есть опыт в этом деле? (где, кем, когда, кто может подтвердить) - Опыта в данной сфере нет, но хотелось бы получить его в дальнейшем, тем самым помочь проекту.
Сколько часов в день вы готовы посвятить нашему проекту? - В данный момент, большая часть времени уходит на учёбу. Он составит примерно 3-4 часа.
В какое время обычно играете (по Москве) - 15:00-19:00 мск.
В каком городе проживаете? - Великий Новгород
Почему вы хотите занять эту должность? - Я провожу своё время на вашем проекте, и часто замечаю в мини-играх игроков, которые используют ненормативную лексику. Хочу быть тем модератором, к которому игроки будут обращаться с просьбами, а я всегда им помогу. Чем больше людей, которые будут очищать чат, заниматься помощью, тем лучше серверу и игрокам.
Прочитали ли правила нашего проекта? - Да, прочитал. Готов нести полную ответственность за выданные наказания.
Напишите немного о себе - Как я писал выше, меня зовут Михаил, мне 16 лет. На данный момент учусь в 10 классе, усердно готовлюсь к экзаменам, чтобы в будущем поступить в достойный вуз. Если говорить обо мне, как о человеке, то я дружелюбный, и отзывчивый человек. Легко схожусь с людьми, если же не получается - стараюсь ограничить общение до минимума, да бы не провоцировать конфликты.
Ссылка на Вашу страницу ВКонтакте (Личка и страница должны быть открытыми! А так же вы должны оставлять ссылку с вашим настоящим ID, состоящим из цифр, а не вами придуманным) - https://vk.com/id244309121
И так, чтобы получить Вам наклейку, вам нужно поставить положительную репутацию. Форма для заявки: 1.Написать свой ник; 2.Поставил ли ты положительную репутацию да/нет;
Краткая информация:
PHP - скриптовый язык программирования. Используется, в большей степени, для создания веб-приложений, и является самым популярным языком для разработки динамических веб-сайтов и генерации HTML.
Подготовка:
Для начала нам нужно создать файл с нашим ботом. Давайте назовем его "bot.php"?, а затем откроем с помощью любого текстового редактора (Например: Sublime Text 3, Atom, Nodepad++) и вставим теги начала и конца:
Начинаем кодить:
Для удобства, предложу сразу же задефайнить наш токен доступа и строку (строку можно получить в настройках CallBack API)
define('confirmation_token', 'c6d0c6e4');
define('token', '086b5839bbd99ee025cf1ffee4436cicfab8addc98937cw6028190555b929871bb03b86098a59939212d8');
Теперь, можем начать писать и сам обработчик событий!
Для получения обновлений, можно создать переменную data и просвоить ей значение: "json_decode(file_get_contents('php://input') , true)". После этого весь ваш код должен выглядеть так:
<?php
//Строка для подтверждения адреса сервера из настроек Callback API
define('confirmation_token', 'c6d0c6e4');
//Токен доступа к сообществу
define('token', '086b5839bbd99ee025cf1ffee4436cicfab8addc98937cw6028190555b929871aa03b86398a59939212d8');
//При отправке запроса на наш файл, пришедшие в него данные будут переведены в массив для дальнейшей работы
$data = json_decode(file_get_contents('php://input') , true);
?>
Мы можем начинать обрабатывать события, которые нам отсылает ВКонтакте. Для этого давайте создадим switch, перебирающий значение у массива, находящегося в переменной $data.
switch ($data['type']){
case 'confirmation':
break;
case 'message_new':
break;
}
Теперь можно написать действия для наших кейсов. В "confirmation" добавьте строку:
echo confirmation_token;
А в "message_new" просто скопируйте этот код:
//айди чата, где был вызван бот
$peer_id = $data['object']['peer_id'] ? : $data['object']['user_id'];
//текст сообщения, разбитый на пробелы
$text = explode(" ", $data['object']['text']);
//1 часть текста, переведенная в формат, где все буквы - маленькие
$text[0] = mb_strtolower($text[0]);
switch ($text[0]){
case '/help': case '/хелп': case '/команды':
send_message($peer_id, "Доступные команды:\n\n/stats <ник> - просмотр статистики игроков");
break;
}
echo ('ok');
header("HTTP/1.1 200 OK");
Он содержит несколько переменных для работы с сообщениями. А также простой обработчик сообщений.
И также чтоб не сильно углубляться в строение ВК-API, вставьте эти функции в конец бота (перед ?>)
function send_message($peer_id = null, $message = null, $forward_messages = null, $attach = null, $random_id = null)
{
api('messages.send', array(
'peer_id' => $peer_id,
'message' => $message,
'forward_messages' => $forward_messages,
'keyboard' => $keyboard,
'attachment' => $attach,
'random_id' => '0'
));
}
function api($method, $params)
{
$params['access_token'] = token;
$params['v'] = '5.102';
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.vk.com/method/' . $method,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_POSTFIELDS => $params,
CURLOPT_CUSTOMREQUEST => "POST"
]);
$json = curl_exec($curl);
curl_close($curl);
$response = json_decode($json, true);
return $response['response'];
}
Теперь ваш файлик должен выглядеть примерно так:
<?php
define('confirmation_token', 'c6d0c6e4');
define('token', '086b5839bbd99ee025cf1ffee4436cicfab8addc98937cw6028190555b929871aa03b86398a59939212d8');
$data = json_decode(file_get_contents('php://input') , true);
switch ($data['type']){
case 'confirmation':
echo confirmation_token;
break;
case 'message_new':
$peer_id = $data['object']['peer_id'] ? : $data['object']['user_id'];
$text = explode(" ", $data['object']['text']);
$text[0] = mb_strtolower($text[0]);
switch ($text[0]){
case '/help': case '/хелп': case '/команды':
send_message($peer_id, "Доступные команды:\n\n/stats <ник> - просмотр статистики игроков");
break;
}
echo ('ok');
header("HTTP/1.1 200 OK");
break;
default:
echo ('Unsupported event');
break;
}
function send_message($peer_id = null, $message = null, $forward_messages = null, $attach = null, $random_id = null)
{
api('messages.send', array(
'peer_id' => $peer_id,
'message' => $message,
'forward_messages' => $forward_messages,
'keyboard' => $keyboard,
'attachment' => $attach,
'random_id' => '0'
));
}
function api($method, $params)
{
$params['access_token'] = token;
$params['v'] = '5.102';
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.vk.com/method/' . $method,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_POSTFIELDS => $params,
CURLOPT_CUSTOMREQUEST => "POST"
]);
$json = curl_exec($curl);
curl_close($curl);
$response = json_decode($json, true);
return $response['response'];
}
?>
Пожалуй, давайте зальем его на хостинг и проверим работоспособность, не забывая версию CallBack API и путь до бота на вашем сайте (смотрите спойлер).
Важно! Если вы это ранее не сделали, то включите сообщения сообщества.
Если вы все сделали правильно, то написав боту "/help" вы должны получить в ответ такое сообщение:
Собственно, можем начать работать уже с самим API VimeWorld.ru
Работа с API:
Для получения информации об игроке мы будем использовать cURL.
Давайте добавим новую команду - /stats. Для этого перейдем в кейс "message_new" и вставим под "/help" этот текст:
case '/stats': case '/статс': case '/статистика':
send_message($peer_id, "Тест");
break;
И теперь, перед вызовом функции send_message добавим подключение к апи вайма:
$ch = curl_init("https://api.vimeworld.ru/user/name/{$text[1]}");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 4);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Access-Token: MY_TOKEN'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
Вместо "MY_TOKEN" вставьте свой токен разработчика (или удалите эту строчку, иначе будет ошибка).
Далее, можно сделать обработчик ответа:
//если айди не равен нулю
if($response[0]['id']){
//создаем переменную с информацией о игроке
$player = "Профиль игрока: {$response[0]['username']}\nРанг: {$response[0]['rank']}";
}
//иначе
else{
//создаем переменную с ошибкой
$player = "Данного игрока не существует!";
}
И не забываем изменить строчку с send_message на эту:
send_message($peer_id, $player);
Теперь давайте снова зальем этот скрипт и напишем боту "/stats barahag"
Вывод ранга и ника - круто, но как насчет добавления новой информации в /stats?
Давайте зайдем в официальную документацию к этому методу (ну, или под спойлер), и посмотрим, какую информацию предоставляет нам VimeWorld
Полезная для нас информация: гильдия, наигранное время, ранг, уровень и айди.
Для гильдии можно написать простой обработчик:
//если имя гильдии равно чему-то
if($response[0]['guild']['name']){
//делаем переменную с ним
$guild = $response[0]['guild']['name'];
}
//иначе
else{
//переменную с ошибкой
$guild = "Отсутствует";
}
И также, стоило бы преобразовать наигранное время в человеческий вид:
$days = number_format($response[0]['playedSeconds']/60/60/24,0,'.','');
$hour = number_format($response[0]['playedSeconds']/60/60%24,0,'.','');
$min = number_format($response[0]['playedSeconds']/60%60,0,'.','');
$sec = number_format($response[0]['playedSeconds']%60,0,'.','');
И в конце, давайте изменим значение переменной:
$player = "Профиль игрока: {$response[0]['username']}
Ранг: {$response[0]['rank']}
Гильдия: {$guild}
Проведено в игре: {$days} дн. {$hour} ч. {$min} мин. {$sec} сек.";
Новые команды:
Но зачем ограничиваться только статистикой? Давайте также добавим две новые команды: /staff и /streams.
В отличие от "/stats", здесь мы должны подключиться один раз к апи и работать с информацией в цикле.