-
Автор темы
- #1
Бот предназначался для выдачи расписания, контактов преподавателей и прочей помощи работягам.
Тк я колледж заканчиваю и бот в скором времени уйдет на полки истории, отдаю хомякам на съедение.
Что умеет этот бот:
В общем бот хороший, но надо его хорошенько шлефануть что бы вообще конфетка была.
Тк я колледж заканчиваю и бот в скором времени уйдет на полки истории, отдаю хомякам на съедение.
Что умеет этот бот:
- Выдавать расписание занятий на различные дни недели.
- Выдавать расписание производственных практик.
- Выдавать время пар (когда перемены).
- Выдавать контакты преподавателей (почта, номер телефона и тд).
- Отправлять файлы (задания по разным предметам и прочий полезный контент для группы).
- Позволяет менять тип клавиатуры (либо inline клавиатура, либо панель команд).
- Панель администратора (позволяет выполнять какие-либо манипуляции).
Позволяет выдавать расписание указанный дни недели.
Причем если условно нажать сначала на Понедельник а потом на Вторник, то он изменит последнее сообщение, таким образом минимизируем засорение чата.
У нашего колледжа есть сайт, на котором выкладывается файл с заменами. Для таких случаев в FileNameOnSite.py реализован алгоритм, который ищет название файла по отрывку даты (например: 09 марта 2023, находит Замена на 09 марта 2023 г..docx), если файл был загружен на сайт или он не был скачан ранее, то скачает его в папку Files и начнет парсить таблицу в файле.
Структура таблицы представлена следующим образом:
Парсить начинает со столбца Группа, если находит совпадение тогда начинает парсить саму строку, относительно индекса группы.
Сам парсер docx файла можете улицезреть в файле DocxParser.py
Код, где происходит магия подстановки замен прямиков в расписание и прочее можно увидеть в Lesson.py, объяснять каждую функцию не вижу смысла, больше половины просто не поймут.
Причем если условно нажать сначала на Понедельник а потом на Вторник, то он изменит последнее сообщение, таким образом минимизируем засорение чата.
У нашего колледжа есть сайт, на котором выкладывается файл с заменами. Для таких случаев в FileNameOnSite.py реализован алгоритм, который ищет название файла по отрывку даты (например: 09 марта 2023, находит Замена на 09 марта 2023 г..docx), если файл был загружен на сайт или он не был скачан ранее, то скачает его в папку Files и начнет парсить таблицу в файле.
Структура таблицы представлена следующим образом:
Парсить начинает со столбца Группа, если находит совпадение тогда начинает парсить саму строку, относительно индекса группы.
Сам парсер docx файла можете улицезреть в файле DocxParser.py
Код, где происходит магия подстановки замен прямиков в расписание и прочее можно увидеть в Lesson.py, объяснять каждую функцию не вижу смысла, больше половины просто не поймут.
Можно сказать просто переменная, которая отправляется. К сожалению, не было времени реализовать ее через SQL по этому имеем что имеем, заполняется только через изменение содержимого переменной через код. Файл - Practice.py
Просто показывает когда начало, когда конец, ничего сверхъестественного тут нет, типичное расписание для типичного колледжа.
По схеме визуального отображение схоже с расписанием, тыкаешь на преподавателя, получаешь его контакты, так же изменяет предыдущее сообщение если оно того же типа.
К сожалению, изменить состав преподавателей и их контактную информацию можно только через код.
К сожалению, изменить состав преподавателей и их контактную информацию можно только через код.
Позволяет скачивать файлы с определенных папок.
Имеет интерфейс как у проводника windows, конечно на сколько это можно было реализовать.
Отправляет конкретно файл побайтово, а не кешируя в ссылку, таким образом не получится отправить более или менее объемные файлы.
Активный путь для каждого пользователя хранит в классе, так что учитывайте, любой перезапуск скрипта == слет инфы о активных путях для пользователя, прийдется заново прожимать команду. Естественно отправляется 1 сообщение, а дальше лишь редактируется ботом, получается своеобразный проводник windows. Можно делать сколько хочешь подпапок, на сколько это позволит API, для тек кто не в курсе, API телег не даст сделать callback больше 64 байт, так что имена файлов и папок с большим названием могут парализовать работу данной функции.
Имеет интерфейс как у проводника windows, конечно на сколько это можно было реализовать.
Отправляет конкретно файл побайтово, а не кешируя в ссылку, таким образом не получится отправить более или менее объемные файлы.
Активный путь для каждого пользователя хранит в классе, так что учитывайте, любой перезапуск скрипта == слет инфы о активных путях для пользователя, прийдется заново прожимать команду. Естественно отправляется 1 сообщение, а дальше лишь редактируется ботом, получается своеобразный проводник windows. Можно делать сколько хочешь подпапок, на сколько это позволит API, для тек кто не в курсе, API телег не даст сделать callback больше 64 байт, так что имена файлов и папок с большим названием могут парализовать работу данной функции.
Просто позволяем менять тип взаимодействия между командами и клавиатурой.
К слову, данные у кого какой тип взаимодействия с ботом нигде не хранятся, так что если вы добавите какую-либо команду, то потребуется отправить данные на каждого пользователя, а так как основной тип взаимодействия это командное меню, то задумайтесь над этим, либо вырежьте клавиатуру из доступных.
К слову, данные у кого какой тип взаимодействия с ботом нигде не хранятся, так что если вы добавите какую-либо команду, то потребуется отправить данные на каждого пользователя, а так как основной тип взаимодействия это командное меню, то задумайтесь над этим, либо вырежьте клавиатуру из доступных.
Позволяет выполнять манипуляции над расписанием.
Список команд:
Список команд:
- /setReducedSchedule -interval -lesson -date | Позволяет задавать сокращенные занятия на определенную дату | Например: /setReducedSchedule -50 -2 -09 марта 2023 - установить сокращенные пары на 09 марта 2023, начиная со 2-ой пары, каждая пара по 50 минут, перемена 10 минут (это поменять можно только в коде, тк мне это не требуется). После повторного вода этой же команда с тем же содержанием она удалиться из базы (если случайно добавили или что-то не верно ввели).
- /addSchedule -№ -item -point -teacher -date | Позволяет задать специальное занятие на определенный день, старое расписание отображаться на этот день не будет и будет начинаться с первой добавленной командой записи | Например: /addSchedule -1 -Физра -Спортивный зал -Иванов И.И -09 марта 2023, таким образом расписание на 9 марта будет состоять из 1-ой пары, если хотим добавить еще занятий на это же число то просто прописываем ту же команду просто меняя номер и прочие данные, кроме даты. Если повторно прописать те же самый команды то они удалятся и вернется старое расписание из БД.
- /setSpecialLesson -№ -item -point -teacher -date | Позволяет делать замену на определенный день и пару | Например: /setSpecialLesson -2 -НБ -point -teacher -09 марта 2023 | 9 марта 2-ой пары не будет, если мы ставим НБ то отображаться аудитория, преподаватель и время начала занятия не будут. Повторным вводом команды так же удаляем замену.
- /setSpecialDay -description -date | Позволяет задать информацию вместо расписания | Например: /setSpecialDay -Не учимся, 8 марта -08 марта 2023.
- /addSpecialArgForLesson -description | Позволяет добавить метку со звездочкой к каждому дню недели (ниже в скринах будет показан пример).
- /notification -description | Позволяет отправить уведомление всем пользователям, которые хоть раз писали команды в бота.
- /switchAPI | Нужна была что бы отключать парсинг файла с сайта.
- /group | Так как я староста, мне надо было заполнять рапортичку (кого не было на парах).
- /history | Показывает кто когда пользовался ботом.
Пример установки сокращенного расписания.
Пример установки ручных замен.
Пример установки специального дня.
Пример установки ручных замен.
Пример установки специального дня.
В общем бот хороший, но надо его хорошенько шлефануть что бы вообще конфетка была.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Последнее редактирование: