diff --git a/bot/main/register_user.py b/bot/main/register_user.py
index 1edd246..d41c779 100644
--- a/bot/main/register_user.py
+++ b/bot/main/register_user.py
@@ -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,
),
diff --git a/config.example.py b/config.example.py
index 041b9d7..d6c8f97 100644
--- a/config.example.py
+++ b/config.example.py
@@ -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
diff --git a/models/schedule.py b/models/schedule.py
index 9bfad7e..3e8946b 100644
--- a/models/schedule.py
+++ b/models/schedule.py
@@ -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"Сейчас идет {lesson_type}, закончится через {max(minutes, 1)} мин."
- teachers = [html.escape(teacher) for teacher in self.teacher_ids]
+ def generate_url(kind, target):
+ return f'{html.escape(target)}'
+
+ teachers = [
+ generate_url("teacher", teacher)
+ for teacher in self.teacher_ids
+ ]
rooms = [
- f'ауд. {html.escape(room)}'
+ 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
diff --git a/utils/convert.py b/utils/convert.py
new file mode 100644
index 0000000..8583178
--- /dev/null
+++ b/utils/convert.py
@@ -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)
+ ])