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