Бот для автоматического отслеживания и поздравления юбилейных пользователей. При вступлении в группу юбилейного участника бот присылает в группу администраторов уведомление с именем, ником, id пользователя, юбилейным номером и датой и временем вступления, а также кнопкой "Поздравить" и "Отменить" для автоматического поздравления юбилейного участника или отмены, в случае вступления в группу бота/модератора. В файле .env в переменной GRANT_NUMBER (пример в .env.dist), необходимо установить число, кратно которому будут определятся пользователи (при 500 - 500, 1000 и т.д.), это глобальная настройка для всех групп, если необходимо для какой-то группы выставить индивидуальные значения, то необходимо через приватный канал бота, для этой группы настроить соответствующую таблицу. Для доступа к конфигурированию бота через приватный канал, в файле .env (пример в .env.dist) необходимо прописать в переменной ADMINS, прописать ID пользователей Телеграмм, которые будут иметь соответствующие права.
- Бот, в автоматическом режиме проверяет вступившего пользователя на "юбилейные" места в группе, и посылает оповещения в группу администраторов.
- Все новые вступившие пользователи проверяются по базе данных, что бы исключить повторное поздравление.
- Управление ботов осуществляется в группе администраторов.
- Возможность "тонкой" настройки юбилейных мест. К примеру, каждый: 50, 100, 200 ... и так далее.
- Сохранение данных о двух последующих пользователях.
- Возможность настройки групп администраторов.
- База данных на всех поздравленных пользователей
- Автоматический перезапуск бота в случае возникновения ошибки (Docker)
- /проверка - команда проверяет, есть ли в очереди на поздравление пользователи из модерируемых групп.
- /восстановить - команда предназначена для восстановления кнопок для поздравления, на случай если уведомление с кнопками поздравлениями удалили, или нажали кнопку отмены.
- /списокЮбилейный - выводит историю о юбилейных пользователях
Настройка бота производится в приватном чате, команды доступные в меню:
*/start - Позволяет проверить запушен ли бот и есть ли у пользователя права на конфигурирование */configure - Вызывает главное меню
В главном меню есть доступ для перехода к конфигурированию 2 таблиц:
- Настройка таблицы групп:
- Показать таблицу - выводит таблицу с данными из БД
- Добавить строку - позволяет добавить новую в БД, на одну группу модераторов может быть добавлено несколько групп пользователей, при этом, если ввести id группы модераторов, запись с которой уже существует, то бот просто добавит к старой записи новые группы пользователей, при этом бот уберет дубликаты id пользовательских групп, если их введут повторно.
- Удалить строку - удаляет строку из БД по ID записи в БД
- Главное меню - возвращает в главное меню
- Настройка таблицы с юбилейными номерами:
- Показать таблицу - выводит таблицу с данными из БД
- Добавить строку - позволяет добавить новую в БД, на одну группу пользователей может быть добавлено несколько номеров, при этом, если ввести уже id группы пользователей, запись с которой уже существует, то бот просто добавит к старой записи, новые номера, при этом бот уберет дубликаты номеров а также отсортиует их по возрастанию.
- Удалить строку - удаляет строку из БД по ID записи в БД
- Главное меню - возвращает в главное меню
- aiogram 2.21
- aioredis 2.0
- environs 9.0
- aiosqlite 0.17
- python-dotenv 0.20
- Создайте своего бота с помощью бота @BotFather и сохраните свой токен.
- Необходимо в @BotFather отключить privacy mode.
- Добавьте бота во все чаты, в которых необходимо отслеживать пользователей(боту необходимо выдать права администратора)
- Создать файл .env в директории программы и заполнить его согласно .env.dist
- Вы можете запустить бота локально, установив все зависимости командой: pip install -r requirements.txt и запустив bot.py
- Вы так же можете запустить бота из Docker контейнера, для этого перейдите в терминале, в папку с ботом и выполните команду: docker-compose up
- После чего можете переходить к настройкам админки, для того чтобы бот начал работать в группах в которые он был добавлен, необходимо внести соответствие ID этих групп в таблицу, через приватный канал бота.