PHP Telegram Bot Не могу выводить команды с кнопок
Проблема является следующей, есть меню, есть инлайн кнопка с callback_data => '/registration' однако я вызывал и через принимаемый текст от пользователя и через ['callback_query']['data']
use Telegram\Bot\Api;
$telegram = new Api('...');
$result = $telegram->getWebhookUpdates();
$message = $result['message'];
$iskbd = !$message;
if ($iskbd)
$message = $result['callback_query'];
$usrtext = $message['text'];
$chat_id = $message['chat']['id'];
$usrname = $message['from']['username'];
$user_id = $message['from']['id'];
$usrfirst_name = $message['from']['first_name'];
$usrlast_name = $message['from']['last_name'];
$callback_query = $result['callback_query']['id'];
$callback_data = $result['callback_query']['data'];
$cq_command = mb_strtolower($result['callback_query']['data']);
$teamlogo = 'logo.jpg';
$keyboardvalue = 'inline_keyboard';
if($user_id){
if($usrtext == '/start'){
if($database->get("user_id", "users", "user_id = $user_id") == false){
$answer = [
'Компания, приглашает вас в свою уютную команду',
'',
'<i>Для вступления в команду, зарегистрируйтесь в боте</i>',
];
$inline_keyboard = json_encode([
$keyboardvalue => [
[
['text' => 'Зарегистрироватся', 'callback_data' => '/registration']
]
]
]);
$telegram->sendPhoto(['parse_mode' => 'HTML', 'chat_id' => $chat_id, 'photo' => $teamlogo, 'caption' => implode("\n", $answer), 'reply_markup' => $inline_keyboard]);
}
}
if($cq_command == '/registration'){
/*if($database->get("user_id", "users", "user_id = $user_id") == true){
$answer = [
'Вы уже зарегистрированны!',
];
$inline_keyboard = json_encode([
$keyboardvalue=>[
[
['text' => 'Открыть меню', 'callback_data' => '/start']
],
]
]);
$telegram->sendMessage(['parse_mode' => 'HTML', 'chat_id' => $chat_id, 'text' => implode("\n", $answer), 'reply_markup' => $inline_keyboard]);
}
else
{*/
$answer = [
'Откуда вы узнали о нашей команде?',
];
$inline_keyboard = json_encode([
$keyboardvalue=>[
[
['text' => 'Открыть меню', 'callback_data' => '/start']
],
]
]);
$telegram->sendMessage(['parse_mode' => 'HTML', 'chat_id' => $chat_id, 'text' => implode("\n", $answer), 'reply_markup' => $inline_keyboard]);
//}
}
}
Ответы (1 шт):
Автор решения: php
→ Ссылка
if(isset($result['callback_query'])){//Если была нажата кнопка
$chat_id = $result['callback_query']['message']['chat']['id'];
$callback_data = $result['callback_query']['data'];
}
у вас есть уже чат айди, допустим и коллбек, вы через условие проверяете: если нажата, то перезаписываете переменную таким образом.