territory deep

This commit is contained in:
Kseninia Mikhaylova 2024-07-22 09:23:43 +03:00
parent c1aa007b1a
commit 6a4333e7c1
1 changed files with 57 additions and 39 deletions

View File

@ -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),