Очередь в Telegram. Один человек создаёт очередь — получает короткий код и ссылку-приглашение. Остальные жмут на ссылку и автоматически встают в очередь. Все управление — кнопками под сообщениями бота.
- Создатель: закрыть набор / открыть, пропустить (текущий уходит в конец), удалить очередь.
- Участник: посмотреть участников, выйти, предложить кому-то поменяться местами, пригласить друга.
- Live-сообщение для каждого участника: бот редактирует одно сообщение в чате, обновляя номер в очереди после каждого изменения.
- Уведомления
🔔 Ты следующий после <Имя>и✅ Твоя очередь!. - Автопродвижение: когда current выходит, следующий waiting сразу становится current — без кнопки «Следующий».
- Приглашение пересылаемо: на сообщении-инвайте URL-кнопка
👉 Войти в очередь, она работает у любого, кому это сообщение перешлют.
- Go 1.25
- PostgreSQL (через
pgx/v5, без ORM) - Telegram-клиент:
github.com/go-telegram/bot
Один бинарь, миграции embedded, никаких внешних брокеров/кэшей.
-
Поставь Postgres и создай БД:
sudo -u postgres psql -c "CREATE USER uniqueue WITH PASSWORD 'uniqueue';" sudo -u postgres psql -c "CREATE DATABASE uniqueue OWNER uniqueue;"
-
Возьми токен у @BotFather.
-
Создай
.env:DATABASE_URL=postgres://uniqueue:uniqueue@localhost:5432/uniqueue?sslmode=disable TELEGRAM_BOT_TOKEN=<твой токен>Если
api.telegram.orgнедоступен напрямую (РФ) — добавь сюда же путь до прокси:ALL_PROXY=socks5h://127.0.0.1:1080 -
Поднимай:
make dev
Бот применит миграции автоматически и начнёт получать апдейты.
Внутри бота — постоянная reply-клавиатура снизу: 📋 Новая очередь · 🔑 Войти по коду · 📂 Мои очереди · ✏️ Имя · ℹ️ Помощь. Команды /new, /join, /list, /me, /help тоже работают, но обычно не нужны.
cmd/bot/ — entrypoint
internal/bot/ — бот: команды, callback'и, FSM, рендер, broadcast
internal/queue/ — бизнес-логика очереди (create/join/leave/skip/swap/delete)
internal/db/ — pgxpool + embedded миграции
internal/db/sqlc/ — типы и SQL-запросы
internal/config/ — загрузчик .env