Compare commits

...

2 commits

Author SHA1 Message Date
синечка ♡
f55a47f166 add: AGENTS.md 2026-08-30 14:08:20 +03:00
синечка ♡
cad73e0577 add: FIXME points 2026-08-30 13:57:10 +03:00
6 changed files with 39 additions and 6 deletions

30
AGENTS.md Normal file
View file

@ -0,0 +1,30 @@
# About
This project: Telegram bot for displaying schedule for groups of students
Validate and run project via `uv`
### Commit message rules:
`{fix|add|impl|bot|event|web|any other...}: {message}`
# Folders:
## `./events/`
Separate event system implementation, i.e.: notifications about upcoming lessons
## `./bot/`
Main interactions with bot
## `./models/`
Main implementations
## `./web/`
Folder for static web content
## `./utils/schedule_client.py`
Main schedule database client to communicate with. Autogenerated from private repo, don't modify
# How to run
Copy `./config.example.py` to `./config.py`
Fill all variables in `./config.py`
Run via `uv run main.py`
...anything else???

View file

@ -48,7 +48,7 @@ def start(message: Message):
Просто имей это ввиду😥 Просто имей это ввиду😥
''') ''')
#EDIT #FIXME
send(message, 'Выбери свой факультет' if not u else '<i>Вы начали процедуру перезапуска бота. Все настройки и данные удалены, включая уведомления</i>\nВыбери новый факультет', reply_markup = Markup.selectTopic()) send(message, 'Выбери свой факультет' if not u else '<i>Вы начали процедуру перезапуска бота. Все настройки и данные удалены, включая уведомления</i>\nВыбери новый факультет', reply_markup = Markup.selectTopic())

View file

View file

@ -167,7 +167,7 @@ class Markup_v1:
@staticmethod @staticmethod
def selectGroup(query: str) -> ReplyKeyboardMarkup: def selectGroup(query: str) -> ReplyKeyboardMarkup:
#EDIT #FIXME
schedule = sc.ScheduleDB(api_url=config.SCHEDULE_BASE_URL) schedule = sc.ScheduleDB(api_url=config.SCHEDULE_BASE_URL)
groupList = schedule.query(sc.Group).filter_by(name=query) groupList = schedule.query(sc.Group).filter_by(name=query)

View file

@ -5,7 +5,7 @@ import config as _config
dayStrings = ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье'] dayStrings = ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота', 'Воскресенье']
class Lesson: class Lesson:
#EDIT: фулл переделать потому-что формат поменялся сильно #FIXME: фулл переделать потому-что формат поменялся сильно
def __init__(self, start_end: str, data: dict) -> None: def __init__(self, start_end: str, data: dict) -> None:
self.start: list[int] = [ self.start: list[int] = [
int(start_end.split(' - ')[0].split(':')[0]), int(start_end.split(' - ')[0].split(':')[0]),
@ -67,7 +67,7 @@ class Lesson:
return f'''\ return f'''\
<blockquote>\ <blockquote>\
<b>{self.name}</b> <b>{self.name}</b>#FIXME
{dateStr} {dateStr}
{wrb[2:] if wrb else 'Дополнительная информация отсуствует'}</blockquote>''' {wrb[2:] if wrb else 'Дополнительная информация отсуствует'}</blockquote>'''
@ -105,6 +105,7 @@ class Schedule:
return self.days[self.weekDay] if self.weekDay < 5 else [] return self.days[self.weekDay] if self.weekDay < 5 else []
def getFacCourseByGroup(group: str) -> tuple[str | None, str | None]: def getFacCourseByGroup(group: str) -> tuple[str | None, str | None]:
#FIXME
for faculty, courses in _config.LOAD.items(): for faculty, courses in _config.LOAD.items():
for course in courses: for course in courses:
path = f'./timetables/{faculty} {course}.json'.replace(' ', '_') path = f'./timetables/{faculty} {course}.json'.replace(' ', '_')
@ -120,6 +121,7 @@ def getFacCourseByGroup(group: str) -> tuple[str | None, str | None]:
return None, None return None, None
def getSchedulePathByGroup(group: str) -> str | None: def getSchedulePathByGroup(group: str) -> str | None:
#FIXME
faculty, course = getFacCourseByGroup(group) faculty, course = getFacCourseByGroup(group)
return None if not faculty else f'./timetables/{faculty} {course}.json'.replace(' ', '_') return None if not faculty else f'./timetables/{faculty} {course}.json'.replace(' ', '_')

View file

@ -23,8 +23,8 @@ class User:
self.state: str | bool | None = self.data.get("state", None) self.state: str | bool | None = self.data.get("state", None)
self.topic: str | None = self.data.get("topic", None) # self.topic: str | None = self.data.get("topic", None)
self.course: str | None = self.data.get("course", None) # self.course: str | None = self.data.get("course", None)
self.group: str | None = self.data.get("group", None) self.group: str | None = self.data.get("group", None)
self.notifications: list[str] = self.data.get("notifications", []) # type: ignore self.notifications: list[str] = self.data.get("notifications", []) # type: ignore
self.valid: bool = self.data.get("valid", True) self.valid: bool = self.data.get("valid", True)
@ -53,6 +53,7 @@ class User:
def schedule(self) -> Schedule | None: def schedule(self) -> Schedule | None:
date = datetime.datetime.now() date = datetime.datetime.now()
#FIXME
path = getSchedulePathByGroup(self.group) path = getSchedulePathByGroup(self.group)
if not path: if not path:
self.valid = False self.valid = False