Установка Python и pip
Сначала обновите пакеты и установите Python:
sudo apt update && sudo apt upgrade -y
sudo apt install python3 python3-pip -y
Проверьте версию Python и pip:
python3 --version
pip3 --version
Должно быть Python 3.8+.
Создание виртуального окружения (рекомендуется)
Создайте папку для бота и перейдите в неё:
mkdir telegram_bot && cd telegram_bot
Создайте виртуальное окружение и активируйте его:
python3 -m venv venv
source venv/bin/activate
Установка зависимостей
Теперь установите нужные библиотеки:
pip install aiogram python-dotenv
Создание файла с токеном
Создайте .env
файл:
nano .env
Добавьте туда токен бота:
BOT_TOKEN=ваш_токен_из_BotFather
Сохраните (CTRL + X
, затем Y
и Enter
).
Код бота:
import re
import logging
import os
import asyncio
from aiogram import Bot, Dispatcher, types, Router
from aiogram.types import Message
from aiogram.enums import ParseMode
from aiogram.client.default import DefaultBotProperties
from dotenv import load_dotenv
# Загружаем токен
load_dotenv()
TOKEN = os.getenv("BOT_TOKEN")
# Инициализация бота с DefaultBotProperties
bot = Bot(token=TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.MARKDOWN))
dp = Dispatcher()
router = Router() # Создаем Router
# Регулярка для поиска номеров
PHONE_REGEX = r"\+7\d{10}"
def generate_links(phone):
return (f" *Ссылки на мессенджеры:*\n"
f" [WhatsApp](https://wa.me/{phone[1:]})\n"
f" [Telegram](https://t.me/+{phone[1:]})")
# Обработчик сообщений (через Router)
@router.message()
async def check_message(message: Message):
matches = re.findall(PHONE_REGEX, message.text)
if matches:
for phone in matches:
links = generate_links(phone)
await message.reply(links)
async def main():
logging.basicConfig(level=logging.INFO)
dp.include_router(router) # Подключаем router
await dp.start_polling(bot)
# Запуск бота
if __name__ == "__main__":
asyncio.run(main())
Запуск бота
Создайте файл bot.py
:
shКопироватьРедактироватьnano bot.py
Вставьте код бота (тот, что я давал ранее).
Сохраните и запустите:
shКопироватьРедактироватьpython3 bot.py
Если всё настроено правильно, бот начнёт работать!
Чтобы настроить автозапуск Telegram-бота через systemd на Ubuntu, следуй этим шагам:
Определение пути к Python и проекту
Сначала убедись, что у тебя виртуальное окружение и бота можно запустить вручную.
Перейди в папку с ботом:
cd /root/telegram_bot
source venv/bin/activate
python bot.py
Если бот работает, определим путь к Python:
which python
Допустим, путь вывел:
/root/telegram_bot/venv/bin/python
Запомни этот путь, он понадобится в systemd
.
Создание systemd-сервиса
Создаем новый сервис:
sudo nano /etc/systemd/system/telegram_bot.service
Вставляем этот код (замени пути, если у тебя другие!):
[Unit]
Description=Telegram Bot
After=network.target
[Service]
User=root
WorkingDirectory=/root/telegram_bot
ExecStart=/root/telegram_bot/venv/bin/python bot.py
Restart=always
RestartSec=5
StandardOutput=append:/var/log/telegram_bot.log
StandardError=append:/var/log/telegram_bot_error.log
[Install]
WantedBy=multi-user.target
Запуск сервиса
Сохрани файл (CTRL + X
, затем Y
и Enter
).
Далее выполни команды:
# Обновить systemd
sudo systemctl daemon-reload
# Запустить бота
sudo systemctl start telegram_bot
# Включить автозапуск
sudo systemctl enable telegram_bot
Проверка работы
Проверь статус сервиса:
sudo systemctl status telegram_bot
Если бот работает, ты увидишь «Active (running)».
Если бот не запустился, посмотри логи:
sudo journalctl -u telegram_bot --no-pager --lines=50
Остановка и перезапуск
Если нужно остановить бота:
sudo systemctl stop telegram_bot
Если нужно перезапустить:
sudo systemctl restart telegram_bot
Теперь бот будет автоматически запускаться после перезагрузки сервера!