Так получилось, что администрирую группу в телеграмме в одной из новостроек.
Т.к. спамеров в телеге, мягко сказать, много, пришлось сделать доступ по заявкам.
Сначала заявок было несколько штук в неделю, разгребал руками, но в последнее время спамеры прямо разбушевались. В день бывает до 20-30 заявок.
Нужно зайти в профиль каждого подавшего заявку, задать контрольные вопросы. Вроде времени и не много, но его жалко :)
Пришлось навайбкодить бота :)
Заняло всё, примерно 5 часов чистого времени. Большая часть ушла на тестирование :)
В конфигах можно описывать списки контрольных вопросов. Например у меня это запрос номера квартиры и этажа где она находится.
Контроль идёт по корректности номера квартиры и её расположения на этаже.
Выдержки из README.md
Почему Чур-Бот?
Мифология: Славянская.
Легенда: Чур — древнее божество границ, межи и охраны собственности. Подобно тому как Чур охранял границы предков, этот бот охраняет границы вашей Telegram-группы.
Описание
Чур-Бот позволяет автоматизировать процесс допуска новых участников в Telegram-группу на основе их ответов на вопросы.
Функционал
- Страж: Перехватывает запросы на вступление (
chat_join_request). - Допрос: Задает настроенные вопросы в личных сообщениях.
- Суд: Одобряет заявку, если ответы верны; иначе отклоняет.
- Тайм-аут: Автоматически отклоняет заявки, если пользователь молчит слишком долго.
Установка и Обновление (Linux)
-
Запуск скрипта установки:
bashchmod +x setup.sh ./setup.shСкрипт выполнит все необходимые действия:
- Создаст пользователя
chur_bot. - Создаст виртуальное окружение и установит зависимости.
- Настроит и запустит службу systemd.
- Создаст пользователя
-
Настройка:
- Скопируйте
config.yaml.exampleвconfig.yaml. - Отредактируйте
config.yaml: укажите токен, ID админов и вопросы. - Перезапустите службу для применения настроек:
sudo systemctl restart chur_bot
- Скопируйте
-
Настройка в Telegram:
- Зайдите в настройки группы -> Тип группы / Участники.
- Включите "Одобрять новых участников" (Approve New Members).
- Добавьте бота в группу и сделайте его Администратором с правом "Пригласительные ссылки".
Обновление
Для обновления кода бота и зависимостей:
chmod +x update.sh
./update.sh
Управление службой
- Статус:
sudo systemctl status chur_bot - Логи:
journalctl -u chur_bot -f - Перезапуск:
sudo systemctl restart chur_bot
Команды Администратора
/stats: Показать статистику заявок (ожидающие, одобренные, отклоненные)./logs: Показать последние 10 записей лога прямо в Telegram.- Важно: Эти команды работают только для пользователей, указанных в
admin_idsвconfig.yaml.
Вспомогательные команды
/id: Отправляет текущий ID чата и ID пользователя. Используйте это для заполненияconfig.yaml.
Просмотр логов
Бот пишет логи в консоль и в файл bot.log.
- Консоль: Просто смотрите в терминал, где запущен бот.
- Файл:
tail -f bot.logили откройтеbot.logв редакторе. - Команда Telegram: Отправьте
/logsботу в личку (только для Админов).
