Есть ли способ отправить сообщение боту telegram с нажатой встроенной клавиатурой? - PullRequest
0 голосов
/ 06 мая 2019

У меня есть клавиатура с разметкой ответа.и я установил user_id для его данных обратного вызова.Есть ли способ отправить текстовое сообщение на тот идентификатор, который установлен в данных обратного вызова при нажатии кнопки?Спасибо.

1 Ответ

0 голосов
/ 06 мая 2019

... и я установил user_id для данных обратного вызова

Вам не нужно устанавливать user_id как callback_data для кнопки вашего InlineKeyboard.

Когда пользователь нажимает кнопку, вы получаете Обновление , содержащее идентификатор пользователя: update.callback_query.from.id

есть ли способ отправить текстовое сообщение на тот идентификатор, который установлен в данных обратного вызова при нажатии кнопки?

Учитывая идентификатор пользователя, бот может отправить сообщение, используя метод sendMessage . Передайте идентификатор пользователя как chat_id параметр.


когда пользователь нажимает на встроенную клавиатуру, он перенаправляет на тот URL-адрес, который задан в URL-адресе встроенной клавиатуры, и я добавляю счет пользователя в свою базу данных. Вот почему мне нужны URL-адрес и обратный вызов данных вместе. URL и оценка пользователя в моей базе данных. и когда пользователь нажимает на встроенную клавиатуру, я хочу добавить счетчик URL и счетчик пользователя

Технически вы не можете поместить URL и a callback_data в InlineKeyboardButton. От документов :

InlineKeyboardButton. Этот объект представляет собой одну кнопку встроенной клавиатуры. Вы должны использовать ровно одно из дополнительных полей.

Таким образом, бот не сможет узнать, нажал ли пользователь кнопку с URL или нет.

Единственный возможный обходной путь, который я вижу здесь, - это использование другого веб-сервера в качестве «прокси». Вот моя идея:

  1. Бот отправляет пользователю InlineKeyboard. Клавиатура содержит кнопки с URL-адресами, ведущими на ваш сайт, например https://example.com?url=<URL_ID>&user=<TELEGRAM_USER_ID>
  2. URL_ID здесь - сайт назначения или его идентификатор / хэш, TELEGRAM_USER_ID - идентификатор пользователя телеграммы или его хэш
  3. Ваш веб-сервер увеличивает счетчик в вашей базе данных и перенаправляет пользователя на целевой сайт.
...