Не работает бот в телеграме irazasyed/telegram-bot-sdk
Пишу MiniCRM, пытаюсь сделать бота в телеграме, и бот ни на что не реагирует, в чем может быть ошибка? Использую библиотеку irazasyed/telegram-bot-sdk, вебхук сделал прописав https://api.telegram.org/bot{$Api}/setWebhook?url=https://salute11.ru, вот что выдало:
{"ok":true,"result":true,"description":"Webhook was set"}
Вот hook.php:
<?php
require_once 'app/models/telegram/TelegramBot.php';
require_once 'app/models/check/CheckModel.php';
require_once 'app/models/users/UsersModel.php';
require_once 'functions.php';
require_once 'app/config.php';
use app\models\check\CheckModel;
use app\models\users\UsersModel;
use app\models\TelegramBot;
$botApiKey = 'Api';
$telegramBot = new TelegramBot($botApiKey);
$content = file_get_contents('php://input');
$update = json_decode($content, true);
$telegramBot->handleUpdate($update);`
Вот модель TelegramBot.php:
<?php
namespace app\models\telegram;
use models\users\UsersModel;
class TelegramBot
{
private $botApiKey;
public function __construct($botApiKey) {
$this->botApiKey = $botApiKey;
}
public function sendTelegramMessage($chatId, $text) {
$url = "https://api.telegram.org/bot{$this->botApiKey}/sendMessage";
$postData = [
'chat_id' => $chatId,
'text' => $text
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
public function handleUpdate($update)
{
if (!isset($update['message'])) {
return;
}
$message = $update['message'];
$chatId = $update['chat']['id'];
$text = $message['text'];
$username = $message['from']['username'];
$usersModel = new UsersModel();
try {
$userState = $usersModel->getUserState($chatId);
$currentState = $userState ? $userState['state'] : '';
$user_id = $userState ? $userState['user_id'] : null;
switch ($text) {
case '/start':
$response = $this->handleStartCommand($chatId);
$usersModel->setUserState($chatId, 'start');
break;
case '/email':
$response = $this->handleEmailCommand($chatId);
$usersModel->setUserState($chatId, 'email');
break;
case '/help':
$response = $this->handleHelpCommand($chatId);
break;
default:
$response $this->handleMessage($text, $currentState, $chatId, $usersModel, $user_id, $username);
break;
}
} catch (\Exception $e) {
error_log("Ошибка: " . $e->getMessage() . "\n", 3, 'logs/error.log');
$response = "Произошла ошибка. Пожалуйста, попробуйте ещё раз.";
}
$this->sendTelegramMessage($chatId, $response);
}
private function handleMessage($text, $currentState, $chatId, $usersModel, $user_id, $username)
{
if ($currentState === 'email') {
$user = $usersModel->getUserByEmail($text);
if ($user) {
$user_id = $user['id'];
$response = "Теперь введите ваш OTP код с профиля сайта.";
$usersModel->setUserState($chatId, 'otp', $user_id);
} else {
$response = "Пользователь с таким email не найден.";
}
} elseif($currentState === 'otp' && preg_match('/^\d{7}&/', $text)) {
$otpCode = intval($text);
$otpInfo = $usersModel->getOtpInfoByUserIdAndCode($user_id, $otpCode);
if ($otpInfo) {
$usersModel->createUserTelegram($user_id, $chatId, $username);
$response = "Ваш код подтвержден и Ваши аккаунты связаны!";
$usersModel->setUserState($chatId, '');
} else {
$response = "Введённый код неверен или код устарел...";
}
} else {
$response = "Я не понимаю Вашу команду...";
}
return $response;
}
private function handleHelpCommand($chatId)
{
return "Список команд: \n/start - начать работу\n/email - ввести email\n/help - вывести справку.";
}
private function handleEmailCommand($chatId)
{
return "Введите email с вашего аккаунта MiniCRM: ";
}
private function handleStartCommand($chatId)
{
return "Что-бы иметь возможность пользоваться нашим ботом, Вам необходимо провести привязку аккаунта телеграм и аккаунта MiniCRM.
Для инструкции перейдите по адресу https://salute11.ru, авторизуйтесь в системе и перейдите в ваш профиль."
}
}