Я заблудился с твоим фрагментом. Переменные типа "dp" или "types" не были объявлены. Также у меня нет json тестового файла на inte rnet под рукой, поэтому я объявил его в том же файле (используя пример, который вы даете).
from telegram import InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import Updater, CommandHandler, CallbackQueryHandler
import json
jsonfile='{"tests": [{"description": "Choose your preferred answer from the suggested ones.", "id": 85, "value": "test 1"}, {"description": "Choose your preferred answer from the suggested ones.", "id": 88, "value": "test 1"}]}'
def start(update, context):
keybrd = []
jsondic=json.loads(jsonfile)
for item in jsondic['tests']:
keybrd.append([InlineKeyboardButton(item['value'], callback_data=item['id'])])
markup = InlineKeyboardMarkup(keybrd)
context.bot.send_message(chat_id=update.effective_chat.id,text="Get test",reply_markup=markup)
def button(update, context):
query = update.callback_query
query.answer()
query.edit_message_text(text="Selected option: {}".format(query.data))
def main():
updater = Updater(tgtoken, use_context=True)
updater.dispatcher.add_handler(CommandHandler("start", start))
updater.dispatcher.add_handler(CallbackQueryHandler(button))
Это идея, вы должны наверное нужно переставить кнопки. Вам также нужно завершить sh функцию main с помощью start_polling () и объявить регистратор, но все эти детали можно найти в примере inlinekeyboard на github этой оболочки.