7

Студенты и очереди

Вы когда-нибудь сидели в студенческих чатах?

Студенты и очереди Telegram бот, Чат-бот, Студенты, Универ, Учеба, Очередь, Видео, Без звука, Вертикальное видео, Короткие видео, Длиннопост

Знакомо? Именно так обычно устраиваются очереди на экзамены, зачеты, защиту лабораторных работ, выступления с докладами. Когда в группе больше 20 человек это боль. Куча флуда, номера в очереди перемешиваются со спорами, дебатами, разговорами и важными сообщениями. А кто-то вообще в это время спал... Полный хаос, никакого порядка.

Более продвинутые делают запись в очередь через Google-таблицы: создаётся таблица, в которой заранее размечены строки под очередь. Достаточно просто вписать свою фамилию в свободную строчку.

Студенты и очереди Telegram бот, Чат-бот, Студенты, Универ, Учеба, Очередь, Видео, Без звука, Вертикальное видео, Короткие видео, Длиннопост

Чтобы всё было честно, группа договаривается о времени открытия таблицы. В условный 19:00 староста отправляет ссылку на таблицу, и каждый залетает, пытаясь первым занять заветное место. Чем-то напоминает покупку билетов на концерт: первые места занимают за долю секунды.

Такой способ действительно удобнее, чем "циферки" или "плюсики" в чате вся очередь в одном месте, сразу видно, кто на каком месте, а лишнего флуда почти нет. Но остаются свои нюансы: кто-то может случайно (или не очень) стереть чужую запись, а кто-то из-за медленного интернета не успевает записаться на желаемое место. Да и неудобно это все.

В какой-то момент у меня возникла мысль: зачем эти заморочки, если все можно автоматизировать? Идея очень проста: нужен телеграм-бот, который будет выбрасывать в чат сообщение с очередью в виде текстового списка и inline-кнопкой для записи в очередь. Таким образом, действие записи в очередь сводится к тому, что пользователю нужно лишь нажать на кнопку (прямо в чате), после чего он добавляется в конец списка.

Студенты и очереди Telegram бот, Чат-бот, Студенты, Универ, Учеба, Очередь, Видео, Без звука, Вертикальное видео, Короткие видео, Длиннопост

Эскиз сообщения бота

Загоревшись идеей, бот был реализован за пару часов при помощи Python. Одногруппникам очень даже зашло данное решение, очереди стали более простыми. После этого я постоянно дорабатывал бота и добавлял различные функции: выход из очереди, перемещение, перемешивание, отсрочка открытия очереди и многое другое.

Чуть технарщины. Изначально я сделал бота на pyTelegramBotAPI. Всё работало нормально, за исключением случаев, когда в очередь пытались влететь сразу человек 20-30. А это стандартная ситуация: очередь открылась - и вся группа одновременно жмёт "Записаться". В этот момент бот зависал, а одногруппники злились. Пришлось переписать бота почти с нуля. В новом варианте я уже использовал Aiogram с применением WebHooks для уменьшения задержек получения запросов, вместо SQLite3 подключил PostgreSQL, а для кеширования добавил Redis. Вся эта радость крутится на недорогом VPS.

В итоге получилось что-то вполне боевое: бот спокойно выдерживает массовые заходы в очередь, запросы обрабатываются мгновенно. Единственная проблема, которую не решить - это ограничение Telegram Bot API на частоту обновления сообщения. То есть, в момент массовой записи в очередь список будет обновлятся раз в несколько секунд, и может казаться, что бот зависает. Однако при нажатии на кнопку "Записаться" пользователь мгновенно получает всплывающее сообщение с номером своей позиции, что означает успешную обработку на стороне сервера.

Любой участник очереди может обмениваться местами с другими участниками, передвигаться по очереди, а также выставлять свое место на так называемый "аукцион". Особое внимание я уделил справедливости. Любые перемещения по очереди должны быть только с согласия тех участников, чьи позиции изменятся в результате перемещения. Хочешь поменяться местами с другим участником получи его согласие. Хочешь пропустить вперед пару человек согласие должен дать каждый.

Студенты и очереди Telegram бот, Чат-бот, Студенты, Универ, Учеба, Очередь, Видео, Без звука, Вертикальное видео, Короткие видео, Длиннопост

В итоге очереди в нашей группе стали намного удобнее. Теперь одна очередь это одно сообщение, а не десятки сообщений, разбросанных по всему чату.

В данной статье я описал далеко не все "плюшки", поэтому я оставляю здесь ссылку на моего бота: https://t.me/LuddmillaBot. Кому интересно можете поиграться. Бот может быть полезен не только для студенческих чатов, а вообще где угодно, где вам нужно сформировать какую-то очередь или список.

А у вас во время учебы часто случались конфликты из-за очередей? Пишите в комментариях!👇