No description
- Rust 91.6%
- Nix 4.7%
- Dockerfile 3.7%
- exclude tag caller from direct message recipients - retain caller mention in group and cover filtering with a test |
||
|---|---|---|
| .github/workflows | ||
| docs | ||
| src | ||
| .env.example | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| Dockerfile | ||
| flake.lock | ||
| flake.nix | ||
| README.md | ||
Telegram Tag Bot
Телеграм-бот на Rust (Teloxide) для создания и управления тегами для групповых упоминаний.
Особенности
- Менеджмент тегов: Пользователи могут вступать в кастомные теги.
- Мут тегов: Можно замутить конкретный тег, чтобы не получать упоминания.
- Случайный выбор: Команда
/askвыбирает случайного человека из тега. - Двуязычные команды: Поддержка команд на русском (аск, калл, джоин) и английском.
- Работа без слеша: Возможность использовать команды просто текстом (например,
аск дев).
Важное примечание для групп
По умолчанию у ботов Telegram включен Privacy Mode. Чтобы бот мог реагировать на команды без слеша (например, просто аск вместо /ask), необходимо отключить его:
- Напишите @BotFather.
- Выберите своего бота:
/mybots->@ваш_бот. - Перейдите в Bot Settings -> Group Privacy.
- Нажмите Turn off (должно стать
Privacy mode is disabled). - Если бот уже в группе, его нужно удалить и добавить заново (или сделать администратором).
Команды
/mute <название_тега>- Замутить тег для себя./unmute <название_тега>- Размутить тег./join [название_тега]- Вступить в тег (по умолчанию "алл")./leave [название_тега]- Выйти из тега (по умолчанию "алл")./call [название_тега]- Позвать всех участников тега./ask [название_тега]- Выбрать случайного участника./list- Список всех тегов в группе./help- Справка.
Примеры использования
- Вступить в теги:
джоин девили/join devджоин- вступить в дефолтный тег "алл".
- Вызвать группу:
калл дев- упомянет всех в теге "dev".калл- упомянет всех в теге "алл".
- Выбрать случайного:
аск дев-> "Это @user!"
- Выйти из тега:
лив девлив- выйти из "алл".
Структура проекта
.
├── src/
│ ├── main.rs # Точка входа и диспетчер
│ ├── db.rs # Операции с БД (SQLite)
│ ├── models.rs # Модели данных
│ └── commands/ # Обработчики команд
│ ├── mod.rs # Определение команд и нормализация
│ ├── call.rs # /call (вызов)
│ ├── join.rs # /join (вступление)
│ ├── leave.rs # /leave (выход)
│ ├── list.rs # /list (список)
│ ├── mute.rs # /mute (мут)
│ └── unmute.rs # /unmute (размут)
├── Cargo.toml # Зависимости Rust
├── flake.nix # Конфигурация Nix flake
├── .env.example # Шаблон переменных окружения
└── README.md # Этот файл
Заметки
- Данные хранятся в SQLite (
tagbot.db). - Каждая группа имеет свою отдельную систему тегов.
- Пользователи в муте исключаются из результатов
/call. - Личные уведомления: Чтобы получать уведомления в личку при вызове в группе, вы ДОЛЖНЫ начать чат с ботом лично (отправить ему любое сообщение).