Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中电报bot中的回调和if条件_Python_If Statement_Callback_Telegram Bot - Fatal编程技术网

python中电报bot中的回调和if条件

python中电报bot中的回调和if条件,python,if-statement,callback,telegram-bot,Python,If Statement,Callback,Telegram Bot,你好,我是python中电报机器人开发的新手。面对这个问题: 我需要完成这些条件,以得到2,但事实上,1总是显示出来,我做了一些提问。我想做一个正确答案的计数器,但据我所知,当调用另一个回调时,第一个回调的结果消失了 @bot.message_handler(content_types = ['text']) def get_text(message): if message.text == 'Начать новый тест': markup_inline = typ

你好,我是python中电报机器人开发的新手。面对这个问题: 我需要完成这些条件,以得到2,但事实上,1总是显示出来,我做了一些提问。我想做一个正确答案的计数器,但据我所知,当调用另一个回调时,第一个回调的结果消失了

@bot.message_handler(content_types = ['text'])
def get_text(message):
    if message.text == 'Начать новый тест':
        markup_inline = types.InlineKeyboardMarkup()
        item_1 = types.InlineKeyboardButton(text='№ 1', callback_data='1')
        item_2 = types.InlineKeyboardButton(text='№ 2', callback_data='2')
        markup_inline.add(item_1, item_2)
        bot.send_message(message.chat.id, 'Выберите номер билета', 
                  reply_markup=markup_inline)
    elif not message.text.isdigit():
         bot.send_message(message.chat.id, 'Неизвестная команда')
@bot.callback_query_handler(func = lambda call: True)
def bilet(call):
    global p
    p = 0
    if call.data == '1':
        bilet1vopros1 = types.InlineKeyboardMarkup()
        item_111 = types.InlineKeyboardButton(text='1) Остановившись непосредственно перед пешеходным переходом, чтобы уступить дорогу пешеходу', callback_data= '111')
        item_112 = types.InlineKeyboardButton(text='2) Остановившись на проезжей части из-за технической неисправности транспортного средства',callback_data='112')
        item_113 = types.InlineKeyboardButton(text='3) В обоих перечисленных случаях', callback_data='113')
        bilet1vopros1.add(item_111, item_112, item_113)
        bot.send_message(call.message.chat.id, (emoji.emojize(':pencil2: Билет № 1, вопрос 1 из 20'+
                                                              '\n' +
                                                              '\n*В каком случае водитель совершит вынужденную остановку?*' +
                                                              '\n' +
                                                              '\n1. Остановившись непосредственно перед пешеходным переходом, чтобы уступить дорогу пешеходу' +
                                                              '\n2. Остановившись на проезжей части из-за технической неисправности транспортного средства' +
                                                              '\n3. В обоих перечисленных случаях', use_aliases=True)),
                         parse_mode='Markdown', reply_markup=bilet1vopros1)

   if call.data == '112':
            bot.send_message(call.message.chat.id,
                             (emoji.emojize(':white_check_mark: Верно :white_check_mark:', use_aliases=True)))
   if call.data == '111' or call.data == '112' or call.data == '113':
        markup_inline_bilet1vopros2 = types.InlineKeyboardMarkup()
        item_121 = types.InlineKeyboardButton(text='Разрешён',callback_data='121')
        item_122 = types.InlineKeyboardButton(text='Разрешен только при технической неисправности транспортного средства', callback_data='122')
        item_123 = types.InlineKeyboardButton(text='Запрещён', callback_data='123')
        markup_inline_bilet1vopros2.add(item_121, item_122, item_123)
        img = 'https://imbt.ga/FXcByGXmGq'
        bot.send_message(call.message.chat.id, (emoji.emojize(':pencil2: Билет №1, вопрос 2 из 20' +
                                                              '\n' +
                                                              f'\n{img}' +
                                                              '\n' +
                                                              '\n*Разрешён ли вам съезд на дорогу с грунтовым покрытием ?*' +
                                                              '\n' +
                                                              '\n1. Разрешён' +
                                                              '\n2. Разрешен только при технической неисправности транспортного средства' +
                                                              '\n3. Запрещён', use_aliases=True)),
                         parse_mode='Markdown', reply_markup=markup_inline_bilet1vopros2)
    if call.data == '121':
        bot.send_message(call.message.chat.id,
                         (emoji.emojize(':white_check_mark: Верно :white_check_mark:', use_aliases=True)))
    
    if call.data == '112':
        p += 1
        print(p)
    if call.data == '121':
        p += 1
        print(p)

if __name__ == '__main__':
    bot.polling(none_stop=True)

什么是call.data?我附上了两个截图和代码请不要上传截图,而是直接将代码粘贴到问题上。请看一下as reference。@BeppeC我想他是在引用callback.data作为call.data