33from telegram .files .inputmedia import InputMediaPhoto
44from random import randint
55from pprint import pprint
6- from keyboard import AKI_LANG_BUTTON , AKI_PLAY_KEYBOARD , AKI_WIN_BUTTON , CHILDMODE_BUTTON , START_KEYBOARD
6+ from keyboard import AKI_LANG_BUTTON , AKI_LEADERBOARD_KEYBOARD , AKI_PLAY_KEYBOARD , AKI_WIN_BUTTON , CHILDMODE_BUTTON , START_KEYBOARD
77from telegram import Update , ParseMode
88from telegram .ext import Updater , CommandHandler , CallbackContext , CallbackQueryHandler
99from config import BOT_TOKEN
10- from database import addUser , getChildMode , getCorrectGuess , getLanguage , getTotalGuess , getTotalQuestions , getUnfinishedGuess , getUser , getWrongGuess , totalUsers , updateChildMode , updateCorrectGuess , updateLanguage , updateTotalGuess , updateTotalQuestions , updateWrongGuess
10+ from database import (
11+ addUser ,
12+ getChildMode ,
13+ getCorrectGuess ,
14+ getLanguage ,
15+ getLead ,
16+ getTotalGuess ,
17+ getTotalQuestions ,
18+ getUnfinishedGuess ,
19+ getUser , getWrongGuess ,
20+ totalUsers ,
21+ updateChildMode ,
22+ updateCorrectGuess ,
23+ updateLanguage ,
24+ updateTotalGuess ,
25+ updateTotalQuestions ,
26+ updateWrongGuess )
27+
1128from strings import AKI_FIRST_QUESTION , AKI_LANG_CODE , AKI_LANG_MSG , CHILDMODE_MSG , ME_MSG , START_MSG
1229import akinator
1330
@@ -175,6 +192,53 @@ def del_data(context:CallbackContext, user_id: int):
175192 del context .user_data [f"aki_{ user_id } " ]
176193 del context .user_data [f"q_{ user_id } " ]
177194
195+
196+ def aki_lead (update : Update , _ :CallbackContext ) -> None :
197+ update .message .reply_text (
198+ text = "Check Leaderboard on specific categories in Akinator." ,
199+ reply_markup = AKI_LEADERBOARD_KEYBOARD
200+ )
201+
202+
203+ def get_lead_total (lead_list : list , lead_category : str ) -> str :
204+ lead = f'Top 10 { lead_category } are :\n '
205+ for i in lead_list :
206+ lead = lead + f"{ i [0 ]} : { i [1 ]} \n "
207+ return lead
208+
209+
210+ def aki_lead_cb_handler (update : Update , context :CallbackContext ) -> None :
211+ query = update .callback_query
212+ query .answer ()
213+ data = query .data .split ('_' )[- 1 ]
214+ #print(data)
215+ if data == 'cguess' :
216+ text = get_lead_total (getLead ("correct_guess" ), 'correct guesses' )
217+ query .edit_message_text (
218+ text = text ,
219+ reply_markup = AKI_LEADERBOARD_KEYBOARD
220+ )
221+ elif data == 'tguess' :
222+ text = get_lead_total (getLead ("total_guess" ), 'total guesses' )
223+ query .edit_message_text (
224+ text = text ,
225+ reply_markup = AKI_LEADERBOARD_KEYBOARD
226+ )
227+ elif data == 'wguess' :
228+ text = get_lead_total (getLead ("wrong_guess" ), 'wrong guesses' )
229+ query .edit_message_text (
230+ text = text ,
231+ reply_markup = AKI_LEADERBOARD_KEYBOARD
232+ )
233+ elif data == 'tquestions' :
234+ text = get_lead_total (getLead ("total_questions" ), 'total questions' )
235+ query .edit_message_text (
236+ text = text ,
237+ reply_markup = AKI_LEADERBOARD_KEYBOARD
238+ )
239+
240+
241+
178242def main ():
179243 updater = Updater (token = BOT_TOKEN )
180244 dp = updater .dispatcher
@@ -184,11 +248,13 @@ def main():
184248 dp .add_handler (CommandHandler ('play' , aki_play_cmd_handler , run_async = True ))
185249 dp .add_handler (CommandHandler ('language' , aki_lang , run_async = True ))
186250 dp .add_handler (CommandHandler ('childmode' , aki_childmode , run_async = True ))
251+ dp .add_handler (CommandHandler ('leaderboard' , aki_lead , run_async = True ))
187252
188253 dp .add_handler (CallbackQueryHandler (aki_set_lang , pattern = r"aki_set_lang_" , run_async = True ))
189254 dp .add_handler (CallbackQueryHandler (aki_set_child_mode , pattern = r"c_mode_" , run_async = True ))
190255 dp .add_handler (CallbackQueryHandler (aki_play_callback_handler , pattern = r"aki_play_" , run_async = True ))
191256 dp .add_handler (CallbackQueryHandler (aki_win , pattern = r"aki_win_" , run_async = True ))
257+ dp .add_handler (CallbackQueryHandler (aki_lead_cb_handler , pattern = r"aki_lead_" , run_async = True ))
192258
193259 updater .start_polling ()
194260 updater .idle ()
0 commit comments