if ($data->type == 'message_new') {
// Тут
}
P.S. Все команды из этой статьи будут в этом самом промежутке$user = R::findOne('users', 'user_id = ?', [$id]); //ищем пользователя с user_id от вк
Далее проверяем на существование пользователяif(!$user){ // $user вернет нам true или false, а знак ! укажет нам на проверку false
// тут код регистрации пользователя
}
Перед регистраций давайте (перед переменной $user) получим имя пользователя, дабы его записать в базу: $userInfo = $vk->request("users.get", ["user_ids" => $id]);
$first_name = $userInfo[0]['first_name'];
И вернемся к регистрации пользователя. Вместо // тут код... пишем нужный вам код. Пример у меня получился такой:if(!$user){
$newUser = R::dispense("users"); // Выбрали таблицу
$newUser->user_id = $id; // Столбец id пользователя вк
$newUser->balance = 0; // Столбец хранения валюты
$newUser->nick = $first_name; // Столбец для ник, для только пришедшего ставим его имя
$newUser->regDate = date("d.m.Y, H:i:s"); // Столбец дата регистрации
$newUser->admin = null; // Столбец в котором можно будет поменять значение на 1 и использовать как проверку на админ доступ к боту
R::store($newUser); // Записали в базу
$vk->sendMessage($peer_id, "@id{$id} ({$first_name}), добро пожаловать )))"); // Уведомили что регистрация прошла успешно
exit; // Завершили скрипт для избежания ошибок
}
Регистрация пользователя готова if(in_array($cmd, ['перевод', 'перевести', 'передать'])){
// Код
}
Теперь поработаем с $args (из выше данных вам переменных)if($args[0] == '' && $reply_author == ''){
$vk->sendMessage($peer_id, "Вы не указали пользователя, которому желаете передать деньги");
}else{
// определяем от куда узнаем кому перевести
}
Весь код команды с комментариями: if(in_array($cmd, ['перевод', 'перевести', 'передать'])){
$trUser = $reply_author; // Создали переменную кому перевести
$sumTr = preg_replace('/\D/', '', $args[0]); // Указали сумму перевода без букв
if($trUser == ''){ // Узнаем указал ли пользователь кому перевести при помощи пересланного сообщения
if($args[1] != ''){ // Проверили ввели ли нам два аргумента (пользователь и сумма) если пересланного сообщения нет
$trUser = $args[0]; // Записали кому перевести из аргумета
$sumTr = preg_replace('/\D/', '', $args[1]); // заменили в сумме id на сумму перевода
}else{
$vk->sendMessage($peer_id, "@id{$id} ({$user['nick']}) не указали кому перевести валюту!");
exit; // Завершили скрипт т.к. не указали пользователя для перевода
}
}
$trUser = preg_replace('/\D/', '', $trUser); // Убрали все буквы из переменной id пользоавтеля для перевода
if($trUser == ''){ // проверяем сумму на пустоту (Обязательно)
$vk->sendMessage($peer_id, "@id{$id} ({$user['nick']}) не указали сумму перевода!");
exit; // Т.к. сумма не указана мы завершили скрипт
}else{ // Если сумма указана, то делаем перевод (почти)
$findTrUser = R::findOne('users', 'user_id = ?', [$trUser]);
if($findTrUser){
$findTrUser['balance'] = $findTrUser['balance'] + $sumTr; // Отправили указаному пользователю сумму
$user['balance'] = $user['balance'] - $sumTr; // Сняли эту сумму у пользователя который отправил
R::store($findTrUser); // Записали в базу
R::store($user); // Записали в базу
$vk->sendMessage($peer_id, "@id{$id} ({$user['nick']}), вы успешно перевели {$sumTr} коинов пользователю @id{$findTrUser['user_id']} ({$findTrUser['nick']})"); // Пишем что перевод прошел успешно
$vk->sendMessage($findTrUser['user_id'], "@id{$id} ({$user['nick']}) перевел вам {$sumTr} коинов )"); // Пишем пользователю что ему кинули коинов
}else{
$vk->sendMessage($peer_id, "@id{$id} ({$user['nick']}), указанный пользователь не был найден в базе!");
exit; // в базе нет указаного пользователя из-за чего завершаем скрипт
}
}
}
if(in_array($cmd, ['онлайн', 'online'])){
if($chat_id > 0){ // Если это беседа
$members = $vk->request('messages.getConversationMembers', ['peer_id' => $peer_id]); // Запрос на получение данных о пользователях беседы
foreach ($members['profiles'] as $useronline) { // При помощи foreach производим работу над данными из пришедшего нам массива
if ($useronline['online'] == 1) { // Если проверяемый пользователь в сети
$userOnline++; // Добавляем 1 к общему числу онлайна
$userInfoOnline = $vk->request("users.get", ["user_ids" => $useronline['id'], "fields" => "last_seen"]); // Запрос данных пользователя
$first_nameOnline = $userInfoOnline[0]['first_name']; // Имя
$last_nameOnline = $userInfoOnline[0]['last_name']; // Фамилия
$platformOnline = $userInfoOnline[0]['last_seen']['platform']; // Платформа
if ($platformOnline >= 1 && $platformOnline <= 5) { // 1 - 5 отнесем к телефонам
$platformOnline = '📱';
}else{ // остальные ПК
$platformOnline = '💻';
}
$Onlinelist .= "🗣 @id{$useronline['id']} ({$first_nameOnline} {$last_nameOnline})"." - ".$platformOnline."\n"; // Составили текст с онлайн людьми
}
}
$vk->sendMessage($peer_id, "
📍 Сейчас в сети: {$userOnline} 📍:
{$Onlinelist}
");
}else{ // Если это лс с ботом
$vk->sendMessage($peer_id, "Команда 'Онлайн' доступна только в беседах");
}
}
if(in_array($cmd, ['погода', 'погодка', 'weather'])){
$city = implode(" ", $args); // Объединили текст после команды в единый
if($city == ''){ // Проверка на указание города
$vk->sendMessage($peer_id, "Вы не указали город. Пример: Погода Москва");
exit; // Завершаем скрипт т.к. не указан город
}
$OWApi_key = ''; // Ваш ключ от OpenWeatherMap
$weather=json_decode(file_get_contents("https://api.openweathermap.org/data/2.5/weather?q={$city}&units=metric&appid={$OWApi_key}&lang=ru")); // Составили запрос к OpenWeatherMap
if(empty($weather)){ // Если ответ не пришел
$vk->sendMessage($peer_id, "✖ Ой.. Прости я не поняла, что это за город такой 😿");
}else{ // Если ответ есть, то составляем текст для вывода
$list = "В городе " . $weather->name; // Название города
$list .= "\n🔮 Погода: " . $weather->weather[0]->description; // Название погода (пример: облачно/солнечно)
$list .= "\n💨 Ветер: " . $weather->wind->speed. " m/s "; // Скорость ветра
$list .= "\n🌡 Температура: " . $weather->main->temp . "°C"; // Температура
$list .= "\n☁ Облачность: " . $weather->clouds->all . "%"; // Облачность в процентах
$list .= "\n📊 Давление: " . $weather->main->pressure . " мм.рт.ст"; // Давление
$vk->sendMessage($peer_id, $list); // Вывели погоду
}
}
Нашли ошибку?
Вы можете сообщить об этом администрации.
Выделив текст нажмите CTRL+Enter