Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
4 / 4 / 0
Регистрация: 23.09.2012
Сообщений: 83

Telegram Bot Callback не приходит

20.03.2024, 17:29. Показов 1199. Ответов 1

Студворк — интернет-сервис помощи студентам
Добрый день, запустил бота в телеге и хочу чтобы кнопки inline меню обрабатывались тоже. Команда /start и любой другой текст от пользователя приходит, ссылочные кнопки меню тоже работают, а вот кнопки с колбэками грузятся и не отвечают... Хук настроен, давно работает на обычный текст, но нажатие кнопок не приходит...
Меню:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$str_url = 'https://api.telegram.org/bot'.BOT_TOKEN.'/sendMessage';
    
    $arr_str_data = ['chat_id' => $str_chat_id, 'text' => $str_send_text, 'parse_mode' => 'HTML', 'reply_markup' => json_encode(array(
    'inline_keyboard' => array(
        array(
            array(
                'text' => 'Button 1',
                'callback_data' => '/test_2',
            ),
 
            array(
                'text' => 'Button 2',
                'url'=>'https://google.com'
            ),
        )
    ),
))];
    $opts = array(
        'http'=>array(
            'method'=>"GET",
            'header'=>"Content-type: application/x-www-form-urlencoded\r\n".
            "Accept-language: ru\r\n",
            'content' => http_build_query($arr_str_data)
        )
    );
    $res_context = stream_context_create($opts);
    $str_file = file_get_contents($str_url, false, $res_context);
Установка хука:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$url = 'https://api.telegram.org/bot'.BOT_TOKEN.'/setWebhook';
$data = ['url' => 'https://***.php', 'allowed_updates' => ['message', 'edited_channel_post', 'callback_query']];
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Content-type: application/x-www-form-urlencoded\r\n".
            "Accept-language: ru\r\n" .
             "Cookie: foo=bar\r\n",
    'content' => http_build_query($data)
  )
);
 
$context = stream_context_create($opts);
 
$file = file_get_contents($url, false, $context);
Ловлю хуки так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php define("FROM_BOT_CONTROL", 1);
 
$str_content = file_get_contents("php://input");
$arr_str_update = json_decode($str_content, true);
 
if (!$arr_str_update) {
    exit;
}
 
if (isset($arr_str_update["message"]))
{
    ParceUpdateMessage($arr_str_update["message"]);
}
else if(isset($arr_str_update["callback_query"]))
{
    ParceUpdateCallback($arr_str_update["callback_query"]);
}
 
?>
Добавлено через 51 минуту
Сделал даже тестового бота где все на одном скрипте (кроме хука)
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
 
$str_content = file_get_contents("php://input");
$arr_str_update = json_decode($str_content, true);
 
if (!$arr_str_update) {
    exit;
}
 
function SendMessageToUser($str_chat_id, $str_send_text) {
    $str_url = 'https://api.telegram.org/bot***/sendMessage';
    $arr_str_data = ['chat_id' => $str_chat_id, 'text' => $str_send_text, 'parse_mode' => 'HTML'];
    $opts = array(
        'http'=>array(
            'method'=>"GET",
            'header'=>"Content-type: application/x-www-form-urlencoded\r\n".
            "Accept-language: ru\r\n",
            'content' => http_build_query($arr_str_data)
        )
    );
    $res_context = stream_context_create($opts);
    $str_file = file_get_contents($str_url, false, $res_context);
}
 
function ParceUpdateMessage($arr_str_received_message) {
    $str_chat_id = $arr_str_received_message['chat']['id'];
    if (isset($arr_str_received_message['text']))
    {
        $str_url = 'https://api.telegram.org/bot***/sendMessage';
    
        $arr_str_data = ['chat_id' => $str_chat_id, 'text' => $arr_str_received_message['text'], 'reply_markup' => json_encode(['inline_keyboard' => [ [ [ 'text' => 'Button 1', 'callback_data' => 'testdata' ] ] ] ])];
        $opts = array(
            'http'=>array(
                'method'=>"GET",
                'header'=>"Content-type: application/x-www-form-urlencoded\r\n".
                "Accept-language: ru\r\n",
                'content' => http_build_query($arr_str_data)
            )
        );
        $res_context = stream_context_create($opts);
        $str_file = file_get_contents($str_url, false, $res_context);
    }
}
 
function ParceUpdateCallback($arr_str_received_callback) {
    $str_chat_id = $arr_str_received_callback['chat_instance'];
    SendMessageToUser($str_chat_id, "ParceUpdateCallback");
}
 
if (isset($arr_str_update["message"]))
{
    ParceUpdateMessage($arr_str_update["message"]);
}
else if(isset($arr_str_update["callback_query"]))
{
    ParceUpdateCallback($arr_str_update["callback_query"]);
    if (isset($arr_str_update["message"]))
        ParceUpdateMessage($arr_str_update["message"]);
}
 
?>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.03.2024, 17:29
Ответы с готовыми решениями:

Почему не отправляется файл через telegram bot api?
мой бот должен уметь отправлять файлы в чат, я собрал код для передачи файла: $document = new CURLFile('test.txt'); ...

Telegram Bot api удаление данных БД inline клавиатурой
Подскажите, пожалуйста, как реализовать удаление из базы данных вопроса. 1.callback_data кнопки формируется динамически на основании id...

Telegram Bot, PHP и MySQL
Здравствуйте. Хотелось бы узнать: как реализовать на PHP бота телеграм, который будет коннектиться с БД и изменять/удаляться данные? ...

1
4 / 4 / 0
Регистрация: 23.09.2012
Сообщений: 83
21.03.2024, 04:37  [ТС]
В общем обычная клавиатура работает (которая под строкой ввода), а inline в сообщении не работает! что-то не так с настройками бота???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.03.2024, 04:37
Помогаю со студенческими работами здесь

Telegram Bot API Webhook
Здравствуйте! Вебхук перестал посылать сообщения на обработчик. Они доходят только через несколько минут. В чём может быть проблема?...

Telegram Bot сортировщик на PHP
Доброго времени суток! Нужно реализовать бота в telegram, которому пользователи могут отправлять сообщения типа: 01.10.2018 11:00...

Telegram Bot | Система промокода?
Привет дорогие друзья. Может есть на форуме умельцы, что могут сотворить что то подобное. *Ниже опишу* Телеграмм Бот 1)...

Telegram bot отправка multiline сообщений
Доброго дня! Есть html форма. Текст из этой формы отправляю строку в php скрипт, а в нем уже делаю отправку сообщения боту. С...

BOt Telegram не может начать диалог с пользователем
Добрый день. Год назад телеграм выкатил обновление, после которого бот может сам начинать диалог с пользователем, если бот является...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru