Страницы

Поиск по вопросам

вторник, 27 ноября 2018 г.

Аргумент в сообщении

Как это реализовать?
'Тики, переверни (предложение)' => utf8_strevv("предложение")
Нужно как-нибудь взять предложение после слова "переверни" и внести его в utf8_strrev()
Код:
secret, $secretKey) !== 0 && strcmp($data->type, 'confirmation') !== 0) return;
switch ($data->type) { case 'confirmation': echo $confirmationToken; break;
case 'message_new': $user_id = $data->object->from_id; $user_info = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$user_id}&access_token=$token&v=5.80")); $user_name = $user_info->response[0]->first_name; $message = $data->object->text; $url = 'https://vk.com/foaf.php?id='.$user_id; $file = file_get_contents($url); preg_match_all('##U', $file, $out, PREG_SET_ORDER); if (isset($out[0])) { $date = $out[0][1]; $dt = new DateTime($date); } $random_words = array ( 'Орёл', 'Решка' ); $random_word = $random_words[array_rand($random_words)]; function utf8_strrev($str) { preg_match_all('/./us', $str, $ar); return join('', array_reverse($ar[0])); } $messages_array = [ 'Тики, хелп' => "💎Мои команды:
(Пример: Тики, хелп)

Команды для обычных:

🌕Тики, хелп
🌕Тики, привет
🌕Тики, как дела?
🌕Тики, что делаешь?
🌕Тики, какой у меня ID?
🌕Тики, какая сегодня дата?
🌕Тики, сколько время?
🌕Тики, монетка
🌕Тики, создатель
🌕Тики, рандом
🌕Тики, дата регистрации
🌕Тики, админы", 'Тики, привет' => "🖤Привет {$user_name}!", 'Тики, как дела?' => "🖤Нормально, {$user_name}, а у тебя как?", 'Тики, что делаешь?' => "🖤С тобой переписываюсь, и мне очень весело... А ты?", 'Тики, какой у меня ID?' => "🖤Твой ID: {$user_id}, и он самый крутой!", 'Тики, какая сегодня дата?' => "🖤Дата: ".date("d.m.Y"), 'Тики, сколько время?' => "🖤Время: ".date("H:i:s"), 'Тики, монетка' => "🖤Выпадает: {$random_word}", 'Тики, создатель' => "🖤Создатель: [id406404515|Константин]", 'Тики, рандом' => "🖤Рандомное число: ".rand(1, 100), 'Тики, дата регистрации' => "🖤Дата регистрации ВКонтакте: ".$dt->format('d.m.Y')." ".$dt->format('H:i:s'), 'Тики, админы' => "🖤[id406404515|Константин]", 'Тики, переверни' => ]; foreach($messages_array as $k => $v) { if ($message == $k) { $otvet = $v; } } $request_params = array( 'message' => $otvet, 'user_id' => $user_id, 'access_token' => $token, 'v' => '5.80' );
$get_params = http_build_query($request_params);
file_get_contents('https://api.vk.com/method/messages.send?' . $get_params);
echo('ok');
break;
case 'group_join': $user_id = $data->object->user_id; $user_info = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$user_id}&access_token=$token&v=5.80")); $user_name = $user_info->response[0]->first_name; $request_params1 = array( 'message' => "Привет {$user_name}! Это второй бот Тики. С этим ботом вы можете пообщаться, задавать ему вопросы, спрашивать и многое другое! Кстати, этот бот умеет переворачивать текст! Чтобы узнать команды напиши «Тики, хелп».", 'user_id' => $user_id, 'access_token' => $token, 'v' => '5.80' );
$get_params1 = http_build_query($request_params1);
file_get_contents('https://api.vk.com/method/messages.send?' . $get_params1);
echo('ok');
break; case 'group_leave': $user_id = $data->object->user_id; $user_info = json_decode(file_get_contents("https://api.vk.com/method/users.get?user_ids={$user_id}&access_token=$token&v=5.80")); $user_name = $user_info->response[0]->first_name; $request_params2 = array( 'message' => "Пока {$user_name}! Мы увидемся ещё? Я по тебе буду скучать(((", 'user_id' => $user_id, 'access_token' => $token, 'v' => '5.80' );
$get_params2 = http_build_query($request_params2);
file_get_contents('https://api.vk.com/method/messages.send?' . $get_params2);
echo('ok');
break; return false; } ?>


Ответ

Вся ваша реализация далеко не идеальна, рекомендую избавляться от хранения команда - ответ в массиве.
Но если для вас это удобно, этот вариант-велосипед должен подойти вам:
Короткий идентичный массив команд:
$messages_array = [ 'Тики, привет' => 'Привет', 'Тики, переверни' => 'Введите текст!', 'Тики, как дела?' => 'Хорошо' ];
Сообщение, которое приходит боту:
$message = 'Тики, переверни предложение';
Проход циклом по командам, если в $message есть начало команды, которая содержится в ключе массива $messages_array, то выполняются условия выполнения функции utf8_strrev
foreach ($messages_array as $k => $v) { if ($message == $k) $otvet = $v; elseif (preg_match("/$k/", $message) && preg_match("~$k\s(.*)~", $message, $match)) $otvet = (!empty($match[1])) ? utf8_strrev($match[1]) : $v; }
Далее используем $otvet по назначению для отправки пользователю.

Комментариев нет:

Отправить комментарий