Gift Bot - это простой Telegram-бот, предназначенный для отправки поздравлений и сообщений вашим коллегам. Он поддерживает регистрацию пользователей, рассылку сообщений администраторами и управление пользователями.
- Регистрация и аутентификация пользователей.
- Функции администратора для отправки сообщений всем пользователям или выбранным пользователям.
- Блокировка/разблокировка пользователей через UI-клавиатуру.
- Назначение и снятие прав администратора.
- Ежедневная синхронизация никнеймов/имён из Telegram.
-
Клонируйте репозиторий:
git clone https://github.com/saintvrai/gift-bot cd gift-bot -
Установите зависимости:
go mod tidy
-
Настройте бота:
- Скопируйте
.env.exampleв.env. - Заполните значения в
.env:SERVER_GINMODE,SERVER_PORTPG_HOST,PG_PORT,PG_USER,PG_NAME,PG_PASSWORD,PG_SSLMODETELEGRAM_TOKEN,TELEGRAM_SECRET
- Скопируйте
-
Настройте базу данных:
- Запустите миграции базы данных, расположенные в
db/migrations.
- Запустите миграции базы данных, расположенные в
-
Соберите и запустите бота:
go build -o gift-bot ./gift-bot
Отправьте BotFather список команд в формате:
start - Приветствие и краткое описание
help - Показать список команд
chat - Показать ID чата
login - Регистрация в боте
message - Рассылка сообщения (только админы)
block - Заблокировать пользователей (только админы)
unblock - Разблокировать пользователей (только админы)
admin_add - Назначить администратора (только админы)
admin_remove - Снять права администратора (только админы)
-
Убедитесь, что у вас установлен Docker и Docker Compose.
-
Убедитесь, что в
.envзаполнены значения:PG_*используется и для приложения, и для Docker Compose.SERVER_*иTELEGRAM_*используются приложением.
-
Запустите Docker Compose:
docker-compose up -d
Это создаст и запустит контейнеры для вашего Telegram-бота и PostgreSQL базы данных.
Подробное описание бизнес-логики и поведения бота для пользователей — в документации.
-
/start: Зарегистрируйтесь и начните взаимодействие с ботом.
Бот поприветствует пользователя и предоставит краткое введение.
-
/help: Показать список команд.
-
/chat: Получите ваш уникальный ID чата.
Бот ответит уникальным ID чата пользователя.
-
/login: Войдите в бот, используя секретное слово.
Бот попросит пользователя ввести секретное слово для аутентификации.
-
/message: Отправьте сообщение всем пользователям.
Бот попросит администратора ввести сообщение. После этого предоставит список пользователей для исключения из рассылки. После выбора сообщение отправляется всем пользователям, которые не были исключены.
-
/block: Заблокируйте пользователей.
Бот покажет список пользователей с клавиатурой, где можно выбрать нескольких и нажать «Заблокировать».
-
/unblock: Разблокируйте пользователей.
Бот покажет список заблокированных пользователей с клавиатурой, где можно выбрать нескольких и нажать «Разблокировать».
-
/admin_add: Назначить администратора.
Бот покажет список пользователей для назначения.
-
/admin_remove: Снять права администратора.
Бот покажет список администраторов для снятия прав.
-
/start:
/startОтвет бота:
Привет, <username>! Это простой телеграм бот для поздравляшек своих близких коллег. Тут есть пару команд, чтобы ты мог начать получать сообщения! Если что-то будет не так, то ты всегда можешь написать своему администратору для устранения проблем. -
/message:
/messageОтвет бота:
Введите сообщение, которое хотите отправить всем пользователям:После ввода сообщения:
Выберите пользователей, которым не нужно отправлять сообщение. Для отмены нажмите «Отменить».Администратор выбирает пользователей для исключения и нажимает "Отправить".
-
/block:
/blockОтвет бота:
Выберите пользователей для блокировки. Для отмены нажмите «Отменить».Администратор выбирает пользователей и нажимает «Заблокировать».
Для добавления роли администратора определенному пользователю, ранее требовался доступ к БД. Теперь это можно сделать через /admin_add.
- Заблокированные пользователи не получают рассылки (/message).
- По заблокированным пользователям не формируются уведомления о дне рождения.
- При попытке взаимодействия бот отвечает «Вы заблокированы.»
- Уведомления админам о ДР: ежедневно в 09:00 (Europe/Moscow).
- Синхронизация профилей (никнейм/имя/фамилия): ежедневно в 04:00 (Europe/Moscow).
- Для уведомлений используется дедупликация: каждый админ получает одно уведомление по пользователю в день. Если отправка не удалась, попытка повторится на следующем запуске.
Лимит 10 запросов в минуту на chat_id. При превышении — одно предупреждение и далее игнор до конца окна.
Если вы хотите внести вклад в этот проект, пожалуйста, откройте pull request или issue на GitHub.
Этот README предоставляет обзор проекта Gift Bot, его функций, инструкции по установке и примеры использования. Это должно помочь вам начать работу с ботом и понять его функциональные возможности.