@JohnnyParazit

Как взять значение из массива в моем примере с ботом?

Доброго времени суток! Постараюсь быстро и без воды! Есть бот для телеграм, ниже кусок рабочего кода:

$message = mb_strtolower($message); // все сообщения от пользователей в нижний регистр
 $hello = 'привет'; //на эту фразу реагирует бот
 $bot_hello      = strripos($message, $hello);
 $bot_otv = array(); //это массив ответов на фразу привет!
  $bot_otv[] = 'И тебе привет';
  $bot_otv[] = 'Ку';
  $bot_otv[] = 'Доброго времени суток';
  $bot_otv[] = 'Привет привет';
  $bot_otv[] = ('Привет '. $first_name . '!' );
  $bot_otv[] = 'Здорова!!!';
  $bot_otv[] = 'Я покупаю биток!';
  $bot_otv[] = 'Здрасте!';
  
  $bot_resp = $bot_otv[rand(0, (count($bot_otv) - 1))]; //в эту переменную мы пихаем случайный ответ бота
  
if ($bot_hello === false) { //Если фраза привет не присутствует в контексте ничего не делаем
	} else { //в другом случае отправляем наш рандомный ответ
    sendMsg($group_id, $bot_resp );
}


Вот вроде все прекрасно! Возможно код местами гавнистый, не знаю как его сократить!
ВОПРОС: Как мне сделать массив фраз, чтобы было не просто привет, а несколько "привет, здорово, зрасте и т.д." Чтобы бот мог реагировать на любую фразу с этого массива и подставлять уже свой рандомный ответ!
Заранее благодарю
  • Вопрос задан
  • 532 просмотра
Пригласить эксперта
Ответы на вопрос 2
@link_irk
$message = mb_strtolower($message);
$hello = ['привет', 'доброго дня', 'здравствуйте'];
if(in_array($message, $hello)) {
    // Сообщение от пользователя соответствует одному из элементов массива
} else {

}
Ответ написан
например так
function contain(string $str, array $search): bool
{
    foreach ($search as $needle) {
        if (false !== strpos($str, $needle)) {
            return true;
        }
    }

    return false;
}

$message = mb_strtolower($message);
$hello = [
    'привет',
    'здрасти',
];
$bot_otv = [
    'И тебе привет',
    'Ку',
    'Доброго времени суток',
    'Привет привет',
    'Здорова!!!',
    'Я покупаю биток!',
    'Здрасте!',
];
if (contain($message, $hello)) {
    sendMsg($group_id, $bot_otv[rand(0, (count($bot_otv) - 1))]);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы