TG-Mark-All is a Telegram bot based on Python, designed to tag all members in a group using keywords like the bot's username, "@all" or "@everyone"
- Start and Help Commands: Initialize the bot and access a list of available commands.
- Group Management: View and manage groups where you have administrative privileges.
- Member Tracking: Monitor and display group members, including their activity status.
- Automatic Inactive Member Removal: Automatically remove members who have been inactive for a specified number of days.
- Mass Mentioning: Mention all group members using trigger words.
- Manual Update: Manually refresh the member list for your groups.
- Database Integration: Utilizes SQLite with SQLAlchemy for efficient data management.
- Scheduled Tasks: Uses APScheduler to handle periodic tasks like updating members and removing inactive users.
Once the bot is running, you can interact with it using the following commands in Telegram. Ensure that the bot is added to your groups and has the necessary permissions to read and send messages.
/start: Initializes the bot and displays a welcome message./help: Provides a list of available commands and their descriptions./groups: Displays the groups where you have administrative privileges./members <Group_ID>: Shows the list of members in the specified group./set_expiration_days <Group_ID> <days>: Sets the number of days before inactive members are removed./del_member <Telegram_ID> <Group_ID>: Removes a specific member from the group's database./update: Manually updates the member list for all your groups.
Ниже представлена полная пошаговая инструкция по установке и настройке Telegram-бота TG-Mark-All на чистой системе Linux (Debian/Ubuntu). Инструкция включает установку всех необходимых пакетов, клонирование репозитория, настройку окружения и создание службы Systemd для автоматического запуска бота при старте системы.
Сначала обновим список пакетов и установим обновления для текущих пакетов.
sudo apt update && sudo apt upgrade -yУстановим все необходимые пакеты, включая Python 3, pip, git и другие зависимости.
sudo apt install -y python3 python3-pip python3-venv gitПерейдите в директорию, где вы хотите разместить файлы бота. Например, в /opt.
cd /optКлонируем репозиторий:
git clone https://github.com/MBudkin/TG-Mark-All.gitПерейдите в директорию проекта:
cd TG-Mark-AllСоздадим виртуальное окружение для изоляции зависимостей проекта.
python3 -m venv venvАктивируем виртуальное окружение:
source venv/bin/activateУстановим необходимые пакеты из requirements.txt:
pip install --upgrade pip
pip install -r requirements.txtСоздайте файл .env в корневой директории проекта:
nano .envВставьте следующее содержимое, заменив YOUR_BOT_TOKEN на токен вашего Telegram-бота:
# .env
# Токен вашего Telegram бота
BOT_TOKEN=YOUR_BOT_TOKEN
# Часовой пояс для планировщика (например, Europe/Moscow)
TIMEZONE=Europe/Moscow
# Другие настройки можно добавить здесьСохраните файл и выйдите из редактора (Ctrl + O, затем Ctrl + X в nano).
Убедитесь, что файлы bot.py, models.py и другие необходимые файлы находятся в директории проекта и настроены правильно. Если вы клонировали репозиторий, это должно быть выполнено автоматически.
Прежде чем настраивать службу Systemd, протестируйте запуск бота вручную.
Убедитесь, что виртуальное окружение активировано:
source venv/bin/activateЗапустите бота:
python3 bot.pyЕсли бот запускается без ошибок, можно перейти к следующему шагу. Для остановки бота нажмите Ctrl + C.
Создайте файл службы Systemd. Для этого используем текстовый редактор, например, nano.
sudo nano /etc/systemd/system/tg-mark-all.serviceВставьте следующее содержимое, заменив пути в соответствии с вашим расположением проекта (предполагается, что проект находится в /opt/TG-Mark-All):
[Unit]
Description=TG-Mark-All Telegram Bot
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/TG-Mark-All
Environment="PATH=/opt/TG-Mark-All/venv/bin"
ExecStart=/opt/TG-Mark-All/venv/bin/python3 bot.py
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.targetПояснения к параметрам:
- Description: Описание службы.
- After: Зависимость от сетевых служб.
- User: Пользователь, от имени которого будет запускаться служба (в данном случае
root). - WorkingDirectory: Рабочая директория проекта.
- Environment: Указание пути к виртуальному окружению.
- ExecStart: Команда для запуска бота.
- Restart и RestartSec: Автоматический перезапуск службы при сбое.
- WantedBy: Определяет, когда служба должна быть запущена.
Сохраните файл и выйдите из редактора (Ctrl + O, затем Ctrl + X в nano).
Перезагрузим демон Systemd, чтобы он распознал новую службу.
sudo systemctl daemon-reloadЗапустим службу:
sudo systemctl start tg-mark-all.serviceПроверим статус службы:
sudo systemctl status tg-mark-all.serviceВы должны увидеть что-то похожее на:
● tg-mark-all.service - TG-Mark-All Telegram Bot
Loaded: loaded (/etc/systemd/system/tg-mark-all.service; enabled; vendor preset: enabled)
Active: active (running) since ...
Main PID: 12345 (python3)
Tasks: 3 (limit: 4915)
Memory: 50.0M
CGroup: /system.slice/tg-mark-all.service
└─12345 /opt/TG-Mark-All/venv/bin/python3 bot.py
Включим автозапуск службы при загрузке системы:
sudo systemctl enable tg-mark-all.servicesudo systemctl stop tg-mark-all.servicesudo systemctl restart tg-mark-all.serviceДля просмотра логов бота используйте journalctl:
sudo journalctl -u tg-mark-all.service -fФлаг -f позволяет следить за логами в реальном времени.
Если вы вносите изменения в код бота или обновляете репозиторий, выполните следующие шаги:
-
Остановите службу:
sudo systemctl stop tg-mark-all.service
-
Перейдите в директорию проекта и обновите код:
cd /opt/TG-Mark-All git pull origin main -
Установите новые зависимости (если они появились):
source venv/bin/activate pip install --upgrade pip pip install -r requirements.txt deactivate -
Запустите службу снова:
sudo systemctl start tg-mark-all.service
Хотя вы запускаете бота от имени root, рекомендуется создать отдельного пользователя для запуска бота для повышения безопасности.
Создайте пользователя tgbot:
sudo adduser --system --no-create-home tgbotИзмените файл службы /etc/systemd/system/tg-mark-all.service, заменив User=root на User=tgbot и установив соответствующие права на директорию проекта:
sudo chown -R tgbot:tgbot /opt/TG-Mark-AllОтредактируйте файл службы:
sudo nano /etc/systemd/system/tg-mark-all.serviceИзмените строку User=root на User=tgbot.
Сохраните файл, перезагрузите демон и перезапустите службу:
sudo systemctl daemon-reload
sudo systemctl restart tg-mark-all.serviceУбедитесь, что бот работает корректно:
- Откройте Telegram и найдите вашего бота.
- Отправьте команду
/startи убедитесь, что бот отвечает приветственным сообщением. - Проверьте функциональность бота в группах, где он добавлен.
Поздравляю! Вы успешно установили и настроили Telegram-бота TG-Mark-All на вашей системе Linux. Теперь бот будет автоматически запускаться при каждом старте системы и работать в фоновом режиме. Не забывайте периодически проверять логи службы для отслеживания состояния бота и возможных ошибок.