diff --git a/back/tgbot/tgbot.py b/back/tgbot/tgbot.py index 2d6c61c..a580357 100644 --- a/back/tgbot/tgbot.py +++ b/back/tgbot/tgbot.py @@ -97,15 +97,17 @@ class TgBot: self.inv, ) ) + TgBot.app.add_handler(CommandHandler("ter", self.ter, filters.ChatType.PRIVATE)) TgBot.app.add_handler( MessageHandler( filters.ChatType.PRIVATE & filters.Regex(r"/ter_(\d.*)"), self.ter_deep, ) ) - TgBot.app.add_handler(CommandHandler("ter", self.ter, filters.ChatType.PRIVATE)) TgBot.app.add_handler(CallbackQueryHandler(self.ter_back, "ter_back")) TgBot.app.add_handler(CallbackQueryHandler(self.ter_next, "ter_next")) + TgBot.app.add_handler(CallbackQueryHandler(self.terdeep_back, "terdeep_back")) + TgBot.app.add_handler(CallbackQueryHandler(self.terdeep_next, "terdeep_next")) TgBot.app.add_handler(CallbackQueryHandler(self.stop_inv, "stop_inv")) TgBot.app.add_handler(CallbackQueryHandler(self.get_inv, r"get_inv@(.*?)")) TgBot.app.add_handler(CallbackQueryHandler(self.add_tmc, r"add_tmc@(.*?)")) @@ -189,20 +191,6 @@ class TgBot: ) ] - async def ter_back(self, update: Update, context: CallbackContext): - query = update.callback_query - await query.answer() - context.chat_data["territory_start"] -= context.chat_data["territory_count"] - context.chat_data["territory_renew"] = True - await self.inv(update, context) - - async def ter_next(self, update: Update, context: CallbackContext): - query = update.callback_query - await query.answer() - context.chat_data["territory_start"] += context.chat_data["territory_count"] - context.chat_data["territory_renew"] = True - await self.inv(update, context) - async def stop_inv(self, update: Update, context: CallbackContext): query = update.callback_query await update.effective_message.edit_reply_markup(InlineKeyboardMarkup([])) @@ -262,23 +250,37 @@ class TgBot: await self.inv(update, context) + async def ter_back(self, update: Update, context: CallbackContext): + query = update.callback_query + await query.answer() + context.chat_data["ter_start"] -= context.chat_data["ter_count"] + context.chat_data["ter_renew"] = True + await self.ter(update, context) + + async def ter_next(self, update: Update, context: CallbackContext): + query = update.callback_query + await query.answer() + context.chat_data["ter_start"] += context.chat_data["ter_count"] + context.chat_data["ter_renew"] = True + await self.ter(update, context) + async def ter(self, update: Update, context: CallbackContext): user = update.effective_user current_step = context.chat_data.get("step", None) logger.info(f"Step {current_step} from user {user.full_name}") context.chat_data["step"] = "territory" - if "territory_start" not in context.chat_data: - context.chat_data["territory_start"] = 10 - if "territory_count" not in context.chat_data: - context.chat_data["territory_count"] = 10 + if "ter_start" not in context.chat_data: + context.chat_data["ter_start"] = 0 + if "ter_count" not in context.chat_data: + context.chat_data["ter_count"] = 10 locations = [] async for e in Territory.objects.all(): locations.append({"name": e.name, "id": e.id}) - ter_start = context.chat_data["territory_start"] - ter_step = context.chat_data["territory_count"] + ter_start = context.chat_data["ter_start"] + ter_step = context.chat_data["ter_count"] ter_end = ter_start + ter_step text = "\n".join( @@ -295,6 +297,7 @@ class TgBot: ) keyboard = [] + logger.info((ter_start, ter_end)) if ter_start > 0: keyboard.append(InlineKeyboardButton(text="←", callback_data="ter_back")) if ter_end < len(locations): @@ -302,7 +305,7 @@ class TgBot: keyboard = [keyboard] - if "territory_renew" in context.chat_data: + if "ter_renew" in context.chat_data: await update.effective_message.edit_text( text, reply_markup=InlineKeyboardMarkup(inline_keyboard=keyboard), @@ -315,28 +318,39 @@ class TgBot: ), reply_markup=InlineKeyboardMarkup(inline_keyboard=keyboard), ) - + async def terdeep_back(self, update: Update, context: CallbackContext): + query = update.callback_query + await query.answer() + context.chat_data["terdeep_start"] -= context.chat_data["terdeep_count"] + context.chat_data["terdeep_renew"] = True + await self.ter(update, context) + + async def terdeep_next(self, update: Update, context: CallbackContext): + query = update.callback_query + await query.answer() + context.chat_data["terdeep_start"] += context.chat_data["terdeep_count"] + context.chat_data["terdeep_renew"] = True + await self.ter(update, context) + async def ter_deep(self, update: Update, context: CallbackContext): user = update.effective_user current_step = context.chat_data.get("step", None) logger.info(f"Step {current_step} from user {user.full_name}") - context.chat_data["step"] = "territory" - # if "territory_start" not in context.chat_data: - # context.chat_data["territory_start"] = 10 - # if "territory_count" not in context.chat_data: - # context.chat_data["territory_count"] = 10 - + context.chat_data["step"] = "terdeep" + if "terdeep_start" not in context.chat_data: + context.chat_data["terdeep_start"] = 0 + if "terdeep_count" not in context.chat_data: + context.chat_data["terdeep_count"] = 10 + parent = re.findall(r"/ter_(\d.*)", update.effective_message.text) ter = await Territory.objects.aget(id=parent[0]) locations = [] async for e in TerritoryItem.objects.filter(parent=ter): locations.append({"name": e.name, "id": e.id}) - logger.info(parent[0]) - # ter_start = context.chat_data["territory_start"] - # ter_step = context.chat_data["territory_count"] - ter_start = 0 - ter_step = 10 + + ter_start = context.chat_data["terdeep_start"] + ter_step = context.chat_data["terdeep_count"] ter_end = ter_start + ter_step text = "\n".join( @@ -344,7 +358,7 @@ class TgBot: "Выберите:", "\n".join( [ - f"/ter_{i['id']} {i['name']}" + f"/terdeep_{i['id']} {i['name']}" for i in locations[ter_start:ter_end] ] ), @@ -353,13 +367,17 @@ class TgBot: keyboard = [] if ter_start > 0: - keyboard.append(InlineKeyboardButton(text="←", callback_data="ter_back")) + keyboard.append( + InlineKeyboardButton(text="←", callback_data="terdeep_back") + ) if ter_end < len(locations): - keyboard.append(InlineKeyboardButton(text="→", callback_data="ter_next")) + keyboard.append( + InlineKeyboardButton(text="→", callback_data="terdeep_next") + ) keyboard = [keyboard] - if "territory_renew" in context.chat_data: + if "terdeep_renew" in context.chat_data: await update.effective_message.edit_text( text, reply_markup=InlineKeyboardMarkup(inline_keyboard=keyboard), @@ -372,7 +390,7 @@ class TgBot: ), reply_markup=InlineKeyboardMarkup(inline_keyboard=keyboard), ) - + async def inv(self, update: Update, context: CallbackContext): user = update.effective_user current_step = context.chat_data.get("step", None)