added search handle via start
This commit is contained in:
parent
bea6643942
commit
d8538de649
4 changed files with 51 additions and 7 deletions
|
|
@ -3,18 +3,33 @@ import json
|
|||
from telebot.types import Message, ReplyKeyboardRemove
|
||||
from telebot.util import quick_markup
|
||||
|
||||
import config
|
||||
from models import logger
|
||||
from models.bot import Markup_v1 as Markup, bot, send
|
||||
from models.schedule import ScheduleAPIError, find_main_groups, group_exists, group_target
|
||||
from models.user import getAllUsers, validate
|
||||
from utils import convert
|
||||
|
||||
|
||||
@bot.message_handler(commands=["start"])
|
||||
def start(message: Message):
|
||||
user = validate(message)
|
||||
if user.group and "migrate" in (message.text or ""):
|
||||
message.text = str(message.text)
|
||||
|
||||
if "_s" in message.text:
|
||||
query = message.text.split(' ')[-1]
|
||||
search_target_kind = ({
|
||||
't': 'teacher',
|
||||
'r': 'room',
|
||||
'g': 'group'
|
||||
}).get(query[2:3])
|
||||
search_query = convert.decode(query[3:])
|
||||
return send(message, f'search: {search_target_kind} - {search_query}')
|
||||
|
||||
|
||||
if user.group and "migrate" in message.text:
|
||||
user.setState("default")
|
||||
logger.log("Bot", f"{message.from_user.id} migrated")
|
||||
logger.log("Bot", f"{user.id} migrated")
|
||||
return send(message, "Добро пожаловать снова 💞", reply_markup=Markup.default(user))
|
||||
|
||||
was_registered = bool(user.group)
|
||||
|
|
@ -33,7 +48,7 @@ def start(message: Message):
|
|||
"usage": user.usage,
|
||||
"flags": user.flags,
|
||||
},
|
||||
open(f"./users/{message.from_user.id}.json", "w", encoding="utf-8"),
|
||||
open(f"./users/{user.id}.json", "w", encoding="utf-8"),
|
||||
ensure_ascii=False,
|
||||
indent=4,
|
||||
)
|
||||
|
|
@ -61,7 +76,7 @@ def notFoundHandler(message: Message):
|
|||
reply_markup=quick_markup(
|
||||
{
|
||||
"Написать разработчику 💞": {"url": "https://t.me/m/Gg00FvJmZDM6"},
|
||||
"Перезапустить бота 🤖": {"url": "https://t.me/zatups_bot?start=r"},
|
||||
"Перезапустить бота 🤖": {"url": config.TELEGRAM_URL + "?start=r"},
|
||||
},
|
||||
row_width=1,
|
||||
),
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
# Telegram bot token
|
||||
TOKEN: str = '...'
|
||||
|
||||
# Full url to bot
|
||||
TELEGRAM_URL: str = 'https://t.me/your_cool_bot'
|
||||
|
||||
# Telegram proxy url (None for no proxy)
|
||||
TELEGRAM_PROXY: str | None = None
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ from urllib.request import Request, urlopen
|
|||
from zoneinfo import ZoneInfo
|
||||
|
||||
import config
|
||||
from utils import convert
|
||||
|
||||
|
||||
TargetKind = Literal["group", "room", "teacher"]
|
||||
|
|
@ -217,17 +218,28 @@ class Lesson:
|
|||
minutes = int((lesson_end - now).total_seconds() // 60)
|
||||
date_text = f"<i>Сейчас идет</i> {lesson_type}, закончится через {max(minutes, 1)} мин."
|
||||
|
||||
teachers = [html.escape(teacher) for teacher in self.teacher_ids]
|
||||
def generate_url(kind, target):
|
||||
return f'<a href="{config.TELEGRAM_URL}?start=_s{kind[:1]}{convert.encode(html.escape(target))}">{html.escape(target)}</a>'
|
||||
|
||||
teachers = [
|
||||
generate_url("teacher", teacher)
|
||||
for teacher in self.teacher_ids
|
||||
]
|
||||
rooms = [
|
||||
f'<a href="https://rasp.pgups.ru/schedule/room?room={quote(room)}">ауд. {html.escape(room)}</a>'
|
||||
generate_url("room", room)
|
||||
for room in self.room_ids
|
||||
]
|
||||
groups = [html.escape(group) for group in self.group_names]
|
||||
groups = [
|
||||
generate_url("group", group)
|
||||
for group in self.group_names
|
||||
]
|
||||
|
||||
if self.target_kind == "teacher":
|
||||
details = rooms + groups
|
||||
elif self.target_kind == "room":
|
||||
details = groups + teachers
|
||||
elif self.target_kind == "group":
|
||||
details = teachers + rooms
|
||||
else:
|
||||
details = teachers + rooms + groups
|
||||
|
||||
|
|
|
|||
14
utils/convert.py
Normal file
14
utils/convert.py
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
TABLE = 'ёйцукенгшщзхъфывапролджэячсмитьбюЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ1234567890-_. '
|
||||
NUMBER = lambda n: str(n) if n > 9 else '0'+str(n)
|
||||
|
||||
def encode(text: str) -> str:
|
||||
return ''.join([
|
||||
NUMBER(TABLE.index(char)) if char in TABLE else char
|
||||
for char in text
|
||||
])
|
||||
|
||||
def decode(text: str) -> str:
|
||||
return ''.join([
|
||||
TABLE[int(text[index:index+2])] if text[index:index+2].isdigit() else text[index:index+2]
|
||||
for index in range(0, len(text), 2)
|
||||
])
|
||||
Loading…
Add table
Reference in a new issue