Call
kicall - это данные нажатой кнопки и сообщения к которому она прикреплена.
Давайте посмотрим что там находится, и научится извлекать данные из call.
Для этого создадим примитивного бота, который отправит нам данные call:
import telebot from telebot import types TOKEN ="914523141:AAG51M9RB51O-zcop7uFb88QaOvwCHrGcoU" bot = telebot.TeleBot (TOKEN) @bot.message_handler(content_types = ['text']) def send_welcome(message): keyboard = types.InlineKeyboardMarkup() keyboard.add(types.InlineKeyboardButton("text",callback_data = "kot")) bot.send_message(message.chat.id, 'Текст', reply_markup = keyboard ) @bot.callback_query_handler(func=lambda call: True) def knopka_kot(call): if call.data == "kot": bot.send_message(call.message.chat.id, call) bot.polling(none_stop = True)
Наш бот, на любое текстовое сообщение отправляет сообщение с кнопкой. После нажатия кнопки, бот отправляет дынные call.
В этом объекте находится информация отправленного сообщения, у которого была нажата кнопка:
данные кнопки, данные сообщения, данные пользователя который нажал кнопку, и другая полезная информация.
Получение данных из call:
call.from_user - данные пользователя нажавшего кнопку. Для наглядности отправим их с помощью бота:
bot.send_message(call.message.chat.id, call.from_user)
Как видим у from_user есть несколько пар ключ-значение. Из from_user возможно извлечь интересующие нас данные:
call.from_user.id # id-пользователя. call.from_user.username #логин пользователя. first_name #имя пользователя. и т.д.
call.message - данные сообщения.
call.data - callback_data нажатой кнопки
inline_message_id - id-сообщения, которое нажато в inline-режиме.