Search code examples
pythonbotstelepot

Python Telepot bot inline keybard


I am building a bot in Python using Telepot. I am able to have it respond to commands but when i implement an inline keyboard i do not know how to call on them. I know it must be callbackquery but i cannot find how to implement it. Any help would be appreciated.

import sys
import time
import telepot
from telepot.namedtuple import ReplyKeyboardMarkup, KeyboardButton, InlineKeyboardMarkup, InlineKeyboardButton


def on_chat_message(msg):
    content_type, chat_type, chat_id = telepot.glance(msg)
    print('Chat Message:', content_type, chat_type, chat_id)

    if content_type == 'text':
        if msg['text'] == '/start':
           bot.sendMessage(chat_id, 'Welcome to @UK_Cali Teleshop\n      Created by JonSnow 2021',reply_markup = InlineKeyboardMarkup(inline_keyboard=[
                                    [InlineKeyboardButton(text="Feedback",callback_data='a'), InlineKeyboardButton(text="You",callback_data='b'),InlineKeyboardButton(text="PGP",callback_data='c'), InlineKeyboardButton(text="Cunt",callback_data='d')],
                                    [InlineKeyboardButton(text="Products",callback_data='e')]
                                ]
                            ))
        
        
        bot.answerCallbackQuery(callback_query_id)
    
    
            



bot = telepot.Bot('1646167995:AAGsOwfjcryYYkoah69QJ6XGA7koUywmuRk')
print('Listening ...')
bot.message_loop({'chat': on_chat_message}, run_forever=True)






bot = telepot.Bot('TOKEN')

Solution

  • import time
    import telepot
    from telepot.loop import MessageLoop
    from telepot.namedtuple import InlineKeyboardMarkup, InlineKeyboardButton
    
    TOKEN = "super secret bot token"
    
    def on_chat_message(msg):
    
        #here you handel messages and create the iniline keyboard
    
        content_type, chat_type, chat_id = telepot.glance(msg)
    
        keyboard = InlineKeyboardMarkup(inline_keyboard=[
                       [InlineKeyboardButton(text='button text', callback_data='callback query data for reconizing it')],
                   ])
    
    
    def on_callback_query(msg):
    
        #here you handels callback querys,
        #the event that are fired when user clickan inline keyboard'sbutton
    
    
        query_id, from_id, query_data = telepot.glance(msg, flavor='callback_query')
    
        #do something based on the callback query,
        #to recognize the button pressed check query_data,
        #that corresponds to he callback_data setted when creating the button
    
        
    
    bot = telepot.Bot(TOKEN)
    MessageLoop(bot, {'chat': on_chat_message, 
                      'callback_query': on_callback_query}).run_as_thread()
    
    while True:
        time.sleep(10)