我如何开始选择如果用户从Telegram Python Bot API中的内联键盘选择选项该怎么办

时间:2017-08-04 17:19:44

标签: python python-3.x telegram telegram-bot python-telegram-bot

我正在使用python-telegram-bot API编写测试机器人,这是我的代码

我有一个循环和一个嵌套字典,循环遍历字典并阅读所有问题

现在我想将每个问题发送给用户并获取答案并将所有答案保存在列表中,然后计算结果

我的问题是,我无法从用户那里获得选项,然后尝试决定每个选项要做什么。

例如,我想要用户选择" MBTI TEST"然后转到循环并开始询问问题

和我的另一个问题是我的问题函数得到4个参数(机器人,更新,x,y),机器人和更新是默认的,x和y是一个计数器参数,我发送给函数找到它是什么问题。< / p>

通常当函数只有(bot,update)参数时,不需要编写这些参数,我们只需编写函数name.like start函数,当我们定义时我们写def start(bot,update):当我们称之为开始 如何将x和y参数发送给函数?

import telegram
import telegram.ext
from telegram import *
from telegram.ext import *

TOKEN = ''
updater = Updater(TOKEN)
question_E={0:'خود مردم برای من جذاب ترند تا عقاید و احساسات آنها',1:'با 
دیگران بودن به من انرژی می دهد',
        2:'ارتباط برقرار کردن با دیگران را دوست دارم',3:'در مقایسه با 
اطرافيانم دوستان و آشنایان زیادی دارم',
        4:'خودم را اجتماعی ميدانم',5:'ممکن است بعضی ها مرا نادان و سطحی 
پندارند',6:'شناختن من آسان است'}
question_I={0:'معتقدم که شناختن من دشوار است',1:'من آدم نسبتاً عميقی 
هستم',2:'دوست دارم با خودم خلوت کنم و درباره زندگی فکر کنم',
    3:'دوست دارم فقط با عده کمی دوست باشم اما صميمی و نزدیک',4:'با مردم 
بودن مرا خسته می کند',
    5:'خيلی وقتها دوست دارم با خودم تنها باشم',6:'ترجيح می دهم با ایده 
ها و احساسات سر و کار داشته باشم'}
question_S={0:'دوست دارم به حقایق و جزئيات بپردازم',1:'خودم را آدم واقع 
بينی ميدانم',
        2:'ترجيح ميدهم در همين لحظه زندگی کنم',3:'من اهل عمل هستم',
        4:'دوست دارم محکم و با ایمان باشم',5:'من واقع بين و اهل عمل 
هستم',
        6:'ارزش هر چيز به اندازه قيمت آن در بازار است'}
question_N={0:'دوست دارم بدانم فراتر از سطح ظاهری رویدادها چه اتفاقی می 
افتد',
        1:'بعضی ها مرا یک آدم خيالباف تلقی می کنند',2:'من به نسبت دیگران 
خودم را آرمان گرا ميدانم',
        3:'تمایل به آینده نگری دارم',4:'به الهامات و حس درونی خودم اهميت 
زیادی می دهم',
        5:'به احساسم در مورد آینده اطمينان ميکنم',
        6:'ترجيح می دهم تصویری کلی از آنچه رخ می دهد داشته باشم'}
question_T={0:'ترجيح می دهم با هر چيزی به طور منطقی برخورد کنم',1:'من 
معقول و بی طرف هستم',
    2:'اغلب، بر پایه اصول و قواعد تصميم ميگيرم',
    3:'گاهی اوقات لازم است در برابر دیگران راسخ و محکم باشيم',4:'دوست 
دارم بفهمم چرا وقایع رخ می دهند',
    5:'عدالت مهم تر از محبت و دلسوزی است',6:'معتقدم که انسانها از مغزخود 
به حد کافی استفاده نمی کنند'}
question_F={0:'دوست دارم بيشتر به احساسم (ندای قلبم) توجه کنم تا عقلم',
        1:'در ارزیابی حرفها، بيشتر برایم مهم است که چه کسی این حرف را 
زده',
        2:'سياستهای تشویقی هميشه مؤثرتر از اجبار هستند',
    3:'تلاش می کنم بين مردم هماهنگی و توافق باشد',4:'من با دیگران مهربان 
هستم و با آنها اظهارهمدردی می کنم',
        5:'احساس را بر منطق ترجيح می دهم',6:'همدردی و بخشش والاترین 
ارزشهای من هستند'}
question_J={0:'دوست دارم مطابق برنامه ریزی عمل کنم',1:'دوست دارم با دقت 
برنامه ریزی کنم',
    2:'خودم را قاطع و مصمم ميدانم',
    3:'هميشه دقيق و وقت شناس هستم',4:'پایبند بودن به تکاليف و وظيفه ها 
برایم مهم است',
    5:'مرتب و با انضباط هستم',6:'دوست دارم همه چيزتحت کنترل من باشد'}
question_P={0:'تغيير و تحولات زیاد در زندگی را دوست دارم',1:'من کنجکاو 
هستم',
        2:'اتفاقات غيرمنتظره را دوست دارم',
    3:'از تازگی و تنوع لذت می برم',4:'زندگی را با آسودگی و بدون شتاب سپری 
می کنم',
        5:'بسيار انعطاف پذیر هستم',
    6:'برای ایجاد انگيزه در خودم، به دیگران نيازی ندارم'}
all_questions = {0 : question_E,1:question_S,2:question_T,3:question_J,
             4:question_I,5:question_N,6:question_F,7:question_P}
result_list = [0,0,0,0,0,0,0,0]
def start (bot,update):
    keyboard_list = [[InlineKeyboardButton("ABOUT US", callback_data='1')],
                    [InlineKeyboardButton("MBTI Test Start", 
    callback_data='2')]]
    reply_markup = InlineKeyboardMarkup(keyboard_list)
    chat_id = update.message.chat_id
    start_message_sent = "Welcome To My Bot Please Chose Your Options"
    bot.sendMessage(chat_id,start_message_sent, reply_markup=reply_markup)
def bottom(bot, update):
    query = update.callback_query
    chat_id = query.message.chat_id
    selected_option = int(query.data)
    if selected_option==1 :
        bot.sendMessage(chat_id,"You Chose About Us Section Thanks For 
Choosing Us")
    elif selected_option==2:
        bot.sendMessage(chat_id,"You Are Ready To Start Test ...")

def Questions (bot,update,x,y):
    chat_id = update.message.chat_id
    keyboard_list = [[InlineKeyboardButton(u"اصلا", callback_data='1')],
                 [InlineKeyboardButton(u"کمی", callback_data='2')],
                 [InlineKeyboardButton(u"متوسط", callback_data='3')],
                 [InlineKeyboardButton(u"زیاد", callback_data='4')],
                 [InlineKeyboardButton(u"خیلی زیاد", callback_data='5')]]
    reply_markup = InlineKeyboardMarkup(keyboard_list)
    start_message_sent = all_questions[x][y]
    bot.sendMessage(chat_id, start_message_sent, reply_markup=reply_markup)
def answers (bot,update,x,y):
    query = update.callback_query
    chat_id = query.message.chat_id
    selected_option = int(query.data)
    result_list[x] += selected_option
handler = CommandHandler('start', start)
updater.dispatcher.add_handler(handler)
updater.dispatcher.add_handler(CallbackQueryHandler(bottom))
counter = 0


for i in range (0,8):
    for j in range (0,7):
        new_question = all_questions[i][j]
        counter +=1
        print ("Question number ",counter ,new_question)
        updater.dispatcher.add_handler(Handler(Questions))



updater.start_polling()

0 个答案:

没有答案