175 шагов с 13 сентября
Решения из журнала проекта, правки из истории кода и планы. Нажми на строку, чтобы прочитать.
Новости и рассылки
Объявления, конкурсы, события и доска.
10-
планАльбомы из канала целикомпозжев планах
Альбом с хэштегом уйдёт подписчикам всеми фото, а не одним.
Claude: не нужно. Автор: не нужно. Сеньор: не нужно.
-
планСломанная новость не держит остальныепозжев планах
Одна нечитаемая новость перестанет мешать своей пачке.
Claude: не нужно. Автор: не нужно. Сеньор: не нужно.
-
№ 147Рассылка без звукасделано
Админ выбирает: со звуком или тихо.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
№ 36Объявления включены всемсделано
Только важное: дистант, отмены, дедлайны. Конкурсы по желанию.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 26Доска объявленийсделано
Важная рассылка висит в «Изменениях» 24 часа.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 25Рассылка с подтверждениемсделано
Перед отправкой видно, кому и скольким уйдёт, отмена на каждом шаге.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 23ИИ читает новости за тебясделано
Раз в день бот просматривает каналы, VK и сайт ВИШ и раскладывает посты по темам.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 21Новости из каналов по хэштегамсделано
Пост с #конкурс, #объявление или #событие уходит подписчикам темы.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 11Предложить новостьсделано
Сообщение уходит в редакцию Медиа ВИШ.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 10Новости и объявлениясделано
Три темы: конкурсы и стипендии, объявления, события ВИШ.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
Сайты бота
Открытые страницы: Кворум, календарь, эта страница.
3-
gitЭта страницав работе
Дорожная карта, ревью и технический долг на status.secretvish.ru.
Claude: ревью не было. Автор: ещё не смотрел. Сеньор: ещё не смотрел.
-
gitКворум: гимнсделано
Тихий гимн при открытии и кнопка «Выключить звук».
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
gitСтраница «Кворум»сделано
Сколько студентов каждой группы уже в боте, обновляется раз в минуту.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
Поддержка
Министерство Жалоб.
2-
№ 146Разблокировка в Министерстве Жалобсделано
Блок отправителя теперь можно снять.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
№ 122«Поддержка» отдельно от ИИсделано
Вопрос про пары больше не уходит админу обращением.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
Календарь
Пары в календаре телефона, Google и Яндексе.
8-
планGoogle и Яндекс для всехпозжев планах
Прямая запись в календарь выходит из прототипа для админов.
Claude: не нужно. Автор: не нужно. Сеньор: не нужно.
-
№ 145Календарь, этап 4: Яндексв работе
Прямая запись в Яндекс Календарь. Пока только у админов.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
№ 144Календарь, этап 4: Googleв работе
Бот сам пишет пары в Google Календарь. Пока только у админов.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
№ 142Календарь, этап 1сделано
Полгода прошлого в подписке, воронка в /stats, защита от пустых страниц портала.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
gitКалендарь, этап 3: официальный входсделано
Главная и политика конфиденциальности для входа через Google и Яндекс.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
gitКалендарь, этап 2: дружим с Яндексомсделано
Как включить подписку в Яндексе и на Android, и честные сроки обновления.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
№ 137Календари групп от админасделано
Организатор мероприятий получает календари всех групп.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 24Расписание в календаре телефонасделано
Личная ссылка-подписка или файл .ics с парами до конца семестра.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
Серверы и домены
Где живёт бот и как до него достучаться.
9-
планПереезд на Node 24позжев планах
Поддержка Node 22 кончается 30 апреля 2027 года.
Claude: не нужно. Автор: не нужно. Сеньор: не нужно.
-
gitHTTPS от сервера до ботасделано
Московский сервер ходит к боту по защищённому адресу, порт бота 48505.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
№ 136Сертификат календаря на сервересделано
Сертификат для календаря выпускается проверкой через сайт.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
№ 114Вход для Россиисделано
Сервер в Москве, чтобы форма открывалась у российских провайдеров.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 111Проверка адреса через публичный DNSсделано
Бот видит домен так же, как телефоны студентов.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 110Запасной адрес для календарясделано
Бот сам переключает ссылки, если основной домен не работает.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 109Запасной адрес для записывалкисделано
Если основной домен лёг, слайды идут через запасной.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
gitСервер записывалки ставится самсделано
Деплой сам ставит Docker и чинит недонастроенные пакеты.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
gitПонятные ошибки выкладкисделано
Если сервер не найден, CI говорит, что именно не так.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
Записывалка и слайды
Сервис, который снимает слайды вебинаров.
16-
планАудио лекцийпозжев планах
Бот слушает вебинар, присылает аудиоверсию лекции и пишет в чат по инструкции.
Claude: не нужно. Автор: не нужно. Сеньор: не нужно.
-
№ 143Что пишет записывалка сейчассделано
/rec_now показывает идущие вебинары и кого не записали из-за лимита.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
№ 106Слайды под расписанием днясделано
Кнопка «Слайды» у записанной пары и по просьбе в личке.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 105Очерёдность записисделано
Сначала пары, для которых есть своя учётка; некоторые предметы можно пропускать.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 104Перезапуск не стирает снятоесделано
Кадры пары сохраняются на диск по ходу съёмки.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 103Третья учётка вебинаровсделано
Записываются пары 4 курса.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 89Второй профиль порталасделано
Для групп набора 2025 своя учётка вебинаров.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 84Свой образ записывалкисделано
Для браузера нужен свой Docker-образ, панель его не давала.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
git/health про слайдысделано
Сколько записей принято и когда пришла последняя.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
gitКадр без окна звукасделано
Записывалка закрывает диалог аудио и снимает кадр шире.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
№ 82Слайды в личку по желаниюсделано
PDF в личку только тем, кто включил; главный путь через тему чата.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 72Слайды кускамисделано
Большой PDF уходит частями, если сервер режет размер.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 71Записывалка на своём сервересделано
Выкладка на VPS через SSH и Docker.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 70Сертификаты порталасделано
Портал отдаёт неполную цепочку сертификатов, записывалка теперь всё равно входит.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 67Записывалка не теряет парысделано
Неудачную попытку она повторяет раз в минуту до конца пары.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 47Записывалка слайдовсделано
Отдельный сервис заходит на вебинар, снимает слайды и отдаёт боту PDF.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
МАКС
Тот же бот в мессенджере МАКС.
4-
планМАКС через вебхукпозжев планах
Бот будет получать события МАКС по вебхуку, как советует сам мессенджер.
Claude: не нужно. Автор: не нужно. Сеньор: не нужно.
-
№ 141МАКС: один экрансделано
Под экраном одна кнопка «Меню», чат не засоряется.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
№ 140МАКС: меню и кнопкисделано
Меню под сообщениями, «Найти с ИИ», «Др. группы».
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
№ 139Бот в МАКСсделано
Тот же бот в МАКС через мост, без второй копии кода.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
Исправления и ревью
Найденные ошибки и правки после ревью.
24-
№ 138Календари групп: правки по ревьюсделано
«Отозвать все» отзывает действительно все ссылки.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 128Третье ревью: слайдысделано
Части одного PDF собираются вместе.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 127Третье ревью: слоты и обращениясделано
Чья учётка в слоте, теперь видно по отчёту записывалки.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 126Повторное ревью: чисткасделано
В тестах только выдуманные имена.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 125Повторное ревью: записывалкасделано
Меньше входов под учётками студентов.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 124Повторное ревью: ожидание вводасделано
Кнопка меню снимает только ожидание текста.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 123Повторное ревью: отзыв слотасделано
Отзыв убирает только свою учётку.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 121Ревью: интерфейссделано
Кнопка меню снимает ожидание ввода.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 120Ревью: слоты и записывалкасделано
Занятость слота видна и для учёток с сервера.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 119Ревью заявок: безопасностьсделано
Поддельные запросы к форме больше не роняют бота по памяти.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 99Слайды не доходили с серверасделано
Неверный адрес и слишком большие PDF: обе причины исправлены.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 94Правки по ревью измененийсделано
Последнее изменение пары главнее предыдущих.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 90Второй профиль: правки по ревьюсделано
Студент одного набора не заходит под своим именем на чужие пары.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 88Правки по ревью знакомствсделано
Список старост не выдаётся ответом, знакомства строже.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 83Правки по ревью чатовсделано
Разовая просьба слайдов больше не превращается в подписку.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
gitПустая строка в .envсделано
Пустое значение из образца больше не прячет настоящее.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
№ 69Ревью всего проектасделано
Шесть ревьюеров прочитали весь код: падение от кривого адреса, утечка токена в лог и другое.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 68Правки по ревьюсделано
Однофамильцы, поиск и мелочи после ревью.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 51Правки по ревью, раунд 8сделано
Время в журналах сравнивается в одном формате, новости только от админов чата.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
gitПреподаватель не изменениесделано
Появление преподавателя у пары больше не рассылается как изменение.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
gitУборка ложных измененийсделано
Лишние записи убраны из «Изменений», есть ручная команда.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 50Токены не попадают в ошибкисделано
В тексте сетевой ошибки остаются только адрес и путь.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 49Длинные названия групп не ломают кнопкисделано
Ключ группы обрезается по байтам, Telegram больше не отвергает клавиатуру.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
gitПостеры в отдельном процессесделано
Тяжёлая картинка больше не роняет бота.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
ИИ-помощник
Вопросы словами вместо кнопок.
5-
№ 132Год в датах ИИсделано
ИИ больше не путает 21 октября этого года с прошлым.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
№ 131ИИ про все группы сразусделано
«Когда кончаются пары у всех групп завтра» теперь одним ответом.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
№ 35Лимиты ИИ меняются кнопкамисделано
Админ поднимает квоту на сегодня, завтра она возвращается сама.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 33Поиск знает преподавателейсделано
ИИ отвечает, что и у кого ведёт преподаватель и где его ближайшая пара.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 12ИИ отвечает на вопросысделано
Спрашиваешь словами, ИИ смотрит расписание любой группы; у каждого свой дневной лимит.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
Бот в чатах
Болталка, слайды и собрания в групповых чатах.
15-
планНастроение ботапозжев планах
Присылая файл с вебинара, бот ждёт лайков и огоньков. Настроение от 0 до 100, выше не собрать; упадёт, и бот расстроится и перестанет с вами разговаривать.
Claude: не нужно. Автор: не нужно. Сеньор: не нужно.
-
№ 134Личные ответысделано
Свои реплики для отдельных людей рядом со сценарием.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
№ 133День в чате картинкойсделано
Бот прикладывает постер вместо пересказа своими словами.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
№ 87Знакомство своими словамисделано
Бот понимает «знакомься, это…» в свободной форме.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 86Ответ гифкойсделано
В сценарии можно ответить гифкой, стикером или фото.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 85Слайды: модель в курсесделано
ИИ знает о подписках и находит предмет по разговорному названию.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 80Идеи для ботасделано
Предложенная функция записывается и уходит автору.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 79Сонный бот ночьюсделано
С 23 до 5 бот отвечает чуть сонно, лимит на это не тратится.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 76Мягкий отказсделано
Вместо сухого «отвечаю только про расписание» живая фраза.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 75Собрание без парсделано
Бот сверяет время собрания с парами группы.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 74Слайды в тему чатасделано
«@бот сюда слайды по физике», и слайды приходят в эту тему.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 73Знакомство с чатомсделано
Бот спрашивает, что это за группа, и запоминает ответ.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 60Слышит обращения в группесделано
Как выключить privacy mode, чтобы бот слышал «@бот привет».
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 59Сценарий болталкисделано
Готовые ответы владельца главнее идей модели.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 58Бот в групповых чатахсделано
Отвечает на «@бот…» и на ответы своим сообщениям с помощью ИИ.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
Пересдачи
Расписание ППА.
2-
№ 130ИИ знает про пересдачисделано
На вопрос о пересдачах ИИ отвечает расписанием.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
-
№ 129Пересдачисделано
Расписание пересдач группы; отмеченные долги в своём расписании и напоминаниях.
Claude: ревью не было. Автор: принято. Сеньор: ещё не смотрел.
Заявки на запись
Студент даёт учётку, чтобы записывали его группу.
8-
№ 118Чей слотсделано
Админ подписывает, чья учётка стоит в слоте.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 117Общая учётка под присмотромсделано
Бот проверяет, жива ли общая учётка.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 116Учётки в слотахсделано
Одна пара записывается одной учёткой.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 115Заявки, этап 2Cсделано
Админ одобряет или отклоняет, студент может отозвать учётку.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 113Заявки, этап 2Bсделано
Форма «Записывать мою группу» шифрует пароль прямо в телефоне.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 112Заявки, этап 2Aсделано
Бот и записывалка обмениваются заявками.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 108Заявки, этап 1сделано
Учётка студента шифруется, расшифровать её может только записывалка.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 107Проверка учётки через кабинетсделано
Первый шаг к заявкам: логин проверяется без вебинара.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
Изменения и напоминания
Переносы, отмены и напоминания о парах.
8-
№ 98Напоминания в выбранном форматесделано
Текст, картинка или оба, и под ними «Отключить» с «Вернуть».
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 93Изменения одним сообщениемсделано
Всё, что поменялось за раз, приходит одним сообщением; «перенесена» вместо «отменена».
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 92«На сегодня» и «на будущее»сделано
Срочное отдельно, остальное списком по дням.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 48Доставка без потерьсделано
Изменение считается доставленным только после успешной отправки.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 46Изменения в календарь файломсделано
Под каждым уведомлением кнопка с файлом для календаря.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 32Тихие часы не теряют изменениясделано
Что пришло ночью, бот присылает утром одним сообщением.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 28Следить за чужой группойсделано
Можно получать изменения другой группы и одной кнопкой перестать.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 27Только свежие изменениясделано
В «Изменениях» только будущие пары за последние 14 дней, старое исчезает само.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
Расписание
Как выглядит день, неделя и поток.
14-
планПерсонализацияпозжев планах
Бот разберётся, в какой ты подгруппе, перестанет заходить на чужие вебинары, будет посещать вебинары вне расписания и подбирать пересдачи тем, кого перевели из группы в группу.
Claude: не нужно. Автор: не нужно. Сеньор: не нужно.
-
планПереносы выходныхпозжев планах
Бот узнает производственный календарь и перенесённые праздники.
Claude: не нужно. Автор: не нужно. Сеньор: не нужно.
-
№ 91Второй трек группысделано
Группа с хвостом «-2» на портале больше не теряется.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 57Панель предметовсделано
/subjects: все пары предмета за семестр таблицей, прошедшие отмечены. Пока тест.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 54ЛК, ПР, ЛБсделано
Короткие типы пар, преподаватель в той же строке.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 45Время конца парысделано
Видно везде: в дне, неделе, потоке и на постерах.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 40Послезавтра и послепослезавтрасделано
Бот понимает слова-даты любой длины, и в личке, и в inline.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 37Убрана кнопка «сегодня»сделано
Между стрелками её читали как дату, теперь путаницы нет.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 29Постеры листаются на местесделано
Стрелки меняют картинку в том же сообщении, чётность недели в шапке.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
gitСвой вид постерасделано
Каждый выбирает тему постера: тёмная, журнальная, плакатная или лента.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 20Потоксделано
Все группы одного набора на одном экране, общие лекции объединены.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 9Сессиясделано
Изменения в расписании сессии приходят тем, кто их включил.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 8Текст, картинка или обасделано
Расписание приходит текстом, постером или и тем и другим.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 7Подгруппысделано
Фильтр по подгруппе в настройках, по умолчанию видны обе.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
Калибровка общения
Как бот настраивался, чтобы студенту было комфортно с ним говорить.
5-
№ 81Ответ на грубостьсделано
На грубость бот отвечает по-доброму.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 78Знакомства в чатесделано
«Это Имя Фамилия 12-23», и бот запоминает человека.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 77Обращение по именисделано
Тех, кого бот знает, он может назвать по имени; фамилии и ники модели не передаются.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 64Пасхалкасделано
Тёплая карточка для одного из первых помощников бота.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 38Поиск студента по фамилиисделано
Включается отдельно, данные только на сервере, каждый запрос в журнале и тратит лимит.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
Преподаватели и поиск
Найти человека и его расписание.
15-
№ 66Карточка человека картинкойсделано
Расписание человека приходит постером той же темы, что у групп.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 65Свои преподаватели первымисделано
При равном совпадении преподаватель ВИШ стоит выше однофамильцев.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 63Преподавателя узнают сразусделано
На /start преподаватель видит своё расписание без выбора группы.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 61Справочник с нового адресасделано
Портал переехал, бот берёт список оттуда, старый адрес запасной.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 55Режим преподавателясделано
Преподаватель получает то же меню, только «своя группа» это он сам.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 53Расписание по фамилии в inlineсделано
«@бот Фамилия завтра» показывает день человека, неточное совпадение даёт варианты.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 52Единая карточка человекасделано
Преподаватели и студенты ищутся одним поиском и выглядят одинаково.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
gitПреподаватели во всех расписанияхсделано
Одна система с запасным гостевым входом.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
gitСверка списка с ботомсделано
Команда для админа: кто из списка уже пользуется ботом.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 44Следить за преподавателемсделано
Вечером его завтрашний день, утром сегодняшний.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 43Фото после расписаниясделано
Сначала расписание, потом фото: вверх никто не листает.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 42Карта преподавателейсделано
Кто ведёт у ВИШ, какие группы и предметы, кафедра и фото.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 34Поиск прощает опечаткисделано
Одна или две ошибки в фамилии не мешают найти человека.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 31Преподаватели без учётки порталасделано
Бот узнаёт преподавателей со страницы вебинаров, куда пускают гостей.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 19Расписание преподавателейсделано
Поиск по фамилии и имени в любом порядке.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
Основа
Стартовые правила: откуда данные, как часто, каким тоном.
13-
№ 30Без тревожных значковсделано
Ярко-красные значки не пугают зря, мягкие оттенки можно.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
gitЗабыть менясделано
/forget после подтверждения стирает всё, что бот знает о человеке.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 17Секретысделано
Токены и пароли только на сервере и в GitHub Secrets, в коде их нет.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 16Хостинг и автодеплойсделано
Бот живёт на хостинге с панелью и сам выкладывается из GitHub.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 15На чём написансделано
Node.js, TypeScript, grammY и SQLite: вся база в одном файле.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 14Тонсделано
Бот говорит на «ты», сдержанно.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 13Админкасделано
Команды для администраторов: статистика, здоровье бота, рассылки.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 6Напоминаниясделано
До первой пары, перед каждой парой, перед дистантом со ссылкой и вечером на завтра.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 5Что считается изменениемсделано
Новая, убранная или перенесённая пара, другая аудитория, время или формат на ближайшие 14 дней.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 4Как часто бот смотрит порталсделано
Каждые 6 минут днём по будням и субботам, раз в полчаса в остальное время.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 3Одна группа вместо несколькихсделано
Варианты одной группы на портале бот склеивает в одну, как её видит студент.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 2Только ВИШсделано
Бот работает для очных групп Высшей инженерной школы, заочные скрыты.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
-
№ 1Откуда бот берёт расписаниесделано
С портала tt.chuvsu.ru гостевым входом: учётка студента не нужна.
Claude: проверено. Автор: принято. Сеньор: ещё не смотрел.
Ничего не нашлось. Сбрось фильтр или поищи другим словом.
Чему ВИШботик научится
Настроение бота
Присылая файл с вебинара, бот ждёт лайков и огоньков. Настроение от 0 до 100, выше не собрать; упадёт, и бот расстроится и перестанет с вами разговаривать.
82Доволен, огоньки пришли.

Аудио лекций
Бот слушает вебинар, присылает аудиоверсию лекции и пишет в чат по инструкции.
Персонализация
Бот разберётся, в какой ты подгруппе, перестанет заходить на чужие вебинары, будет посещать вебинары вне расписания и подбирать пересдачи тем, кого перевели из группы в группу.
Google и Яндекс для всех
Прямая запись в календарь выходит из прототипа для админов.
МАКС через вебхук
Бот будет получать события МАКС по вебхуку, как советует сам мессенджер.
Переносы выходных
Бот узнает производственный календарь и перенесённые праздники.
Альбомы из канала целиком
Альбом с хэштегом уйдёт подписчикам всеми фото, а не одним.
Сломанная новость не держит остальные
Одна нечитаемая новость перестанет мешать своей пачке.
Переезд на Node 24
Поддержка Node 22 кончается 30 апреля 2027 года.
Три ревью у каждого обновления
- Claude
- Читает код до мёржа: ошибки, утечки, крайние случаи.
- 137 из 166
- Автор
- Владелец бота проверяет обновление вживую, в своём Telegram.
- 165 из 166
- Сеньор
- Опытный разработчик смотрит код и решения. Отметку ставит автор с его слов.
- 0 из 166
проверено есть замечания ещё не смотрели не нужно
44из 100 по шкале технического долга
Индекс долга: от 0 (новый код, ничего не горит) до 100 (каждое изменение стоит втрое дороже). Это не измерение, а прикидка для наглядности: у каждой области свой вес, баллы считаются по правилам ниже, итог взвешен по весам.
-
БезопасностьСерьёзные уязвимости в работе бота: 2 (undici, zod)+12,5
Чужие библиотеки внутри бота. Если в библиотеке дыра, её чинят снаружи, а мы должны вовремя обновиться.
Вес 25. Баллы 50 из 100. В индекс: 25 × 50 / 100 = 12,5.
Что считали Сейчас Правило Баллы Серьёзные уязвимости в работе бота 2 (undici, zod) 15 баллов за каждую 30 Средние уязвимости в работе бота 2 (fflate через satori) 5 баллов за каждую 10 Критичные уязвимости только в инструментах тестов 2 (vitest, tinypool) 5 баллов за каждую: на сервер не попадают 10 -
ПлатформаДо конца поддержки Node 22: 174 дня, до 30.04.2027+10,5
Node.js, на котором бот работает. Когда у версии кончается поддержка, дыры в ней больше никто не латает.
Вес 15. Баллы 70 из 100. В индекс: 15 × 70 / 100 = 10,5.
Что считали Сейчас Правило Баллы До конца поддержки Node 22 174 дня, до 30.04.2027 меньше полугода: 50 баллов 50 Библиотеки, отставшие на мажорную версию 5 4 балла за каждую 20 -
Сложность кодаФункции сложнее порога 15: 94 из 2736 (3,4 %)+6,6
Запутанная функция как узел на проводах: тронешь одно, дёрнется другое.
Вес 15. Баллы 44 из 100. В индекс: 15 × 44 / 100 = 6,6.
Что считали Сейчас Правило Баллы Функции сложнее порога 15 94 из 2736 (3,4 %) 10 баллов за каждый процент 34 Файл больше 1000 строк среди самых меняемых repo.ts, 1908 строк, 58 правок за год 10 баллов 10 -
ТестыСтрок кода без тестов: 28,4 % (покрыто 71,6 %)+4,2
Тесты как страховка на стройке: чем больше кода под ней, тем смелее можно менять.
Вес 15. Баллы 28 из 100. В индекс: 15 × 28 / 100 = 4,2.
Что считали Сейчас Правило Баллы Строк кода без тестов 28,4 % (покрыто 71,6 %) балл за каждый процент непокрытого 28 Критичные модули: база, изменения, календарь, записывалка покрыты на 90 % и больше 0 баллов, если 90 % и выше 0 -
Повторы и связиПовторяющийся код: 2,5 %, почти весь осознанный+1,5
Один и тот же код в двух местах значит, что правку надо помнить сделать дважды.
Вес 10. Баллы 15 из 100. В индекс: 10 × 15 / 100 = 1,5.
Что считали Сейчас Правило Баллы Повторяющийся код 2,5 %, почти весь осознанный 4 балла за процент 10 Циклы между модулями 0 10 баллов за каждый 0 Файлы, которые меняются только вместе три темы постеров, 90 % совместных правок 5 баллов 5 -
Сборка и выкладкаКаждый пуш перезапускает записывалку: да, поэтому нельзя мёржить во время вебинара+4,5
Как код доезжает до сервера. Чем меньше ручных правил, тем реже ошибаются люди.
Вес 10. Баллы 45 из 100. В индекс: 10 × 45 / 100 = 4,5.
Что считали Сейчас Правило Баллы Каждый пуш перезапускает записывалку да, поэтому нельзя мёржить во время вебинара 25 баллов 25 Линтер в CI нет 15 баллов 15 Скрипт lint зовёт то, чего нет eslint не установлен 5 баллов 5 -
ДанныеВосстановление из бэкапа проверялось: не записано нигде, это гипотеза+4
База бота одна. Бэкап, из которого ни разу не восстанавливались, может оказаться пустым в тот день, когда понадобится.
Вес 10. Баллы 40 из 100. В индекс: 10 × 40 / 100 = 4.
Что считали Сейчас Правило Баллы Восстановление из бэкапа проверялось не записано нигде, это гипотеза 40 баллов, пока не проверено 40
Что чиним первым
- TD-03Записывалку перезапускать только при её измененияхчас
- TD-01Обновить undici, zod и satoriчас
- TD-02Переехать на Node 242 или 3 дня
Аудит от . Полный отчёт с доказательствами
