@GRO24

Как правильно получить callback telegram?

Доброго времени суток.
Ребят, не могу понять, как можно сделать уведомление вверху по клику например на кнопку
Выглядит вот так

Alert_1.png

Пытался словить https://api.telegram.org/botAPI_TOKEN/answerCallba...

Но получаю ошибку в ответе {"ok":false,"error_code":400,"description":"Bad Request: query is too old and response timeout expired or query ID is invalid"}

Как правильно словить нажатие и вывести уведомление?
case 'knopka_1':          $bot->editMessageText($chat_id_in, $message_id, "Это кнопка 1", $keyboard_inline2, ["inline_keyboard", false, true]); break;

public function editMessageText($chatid, $message_id, $msg, $keyboard = [], $keyboard_opt = [], $parse_preview = ['html', false]) {
        if(empty($keyboard_opt)) {
            $keyboard_opt[0] = 'keyboard';
            $keyboard_opt[1] = false;
            $keyboard_opt[2] = true;
        }
        $options = [
            $keyboard_opt[0]    => $keyboard,
            'one_time_keyboard' => $keyboard_opt[1],
            'resize_keyboard'   => $keyboard_opt[2],
        ];
        $replyMarkups   = json_encode($options);
        $removeMarkups  = json_encode(['remove_keyboard' => true]);
        
        // если в массиве $keyboard передается [0], то клавиатура удаляется
        if($keyboard == [0]) { $this->get_contents($this->url.'/editMessageText?disable_web_page_preview='.$parse_preview[1].'&chat_id='.$chatid.'&message_id='.$message_id.'&parse_mode='.$parse_preview[0].'&text='.urlencode($msg).'&reply_markup='.urlencode($removeMarkups)); }

        // или же если в массиве $keyboard передается [], то есть пустой массив, то клавиатура останется прежней
        else if($keyboard == []) { $this->get_contents($this->url.'/editMessageText?disable_web_page_preview='.$parse_preview[1].'&chat_id='.$chatid.'&message_id='.$message_id.'&parse_mode='.$parse_preview[0].'&text='.urlencode($msg)); }

        // если вышеуказанные условия не соблюдены, значит в $keyboard передается клавиатура, которую вы создали
        else { $this->get_contents($this->url.'/editMessageText?disable_web_page_preview='.$parse_preview[1].'&chat_id='.$chatid.'&message_id='.$message_id.'&parse_mode='.$parse_preview[0].'&text='.urlencode($msg).'&reply_markup='.urlencode($replyMarkups)); }
    }
  • Вопрос задан
  • 2640 просмотров
Пригласить эксперта
Ответы на вопрос 1
toxa82
@toxa82
Там есть лимит времени на ответ по колбэку, не знаю как сейчас, но пару лет назад это было 10 сек. Если не успеваешь ответить то получаешь такую ошибку как у вас.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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