Введение
В данной статье мы рассмотрим, как создать и запустить телеграмм-бота на Python с использованием модуля Telebot. Мы также разберём, как интегрировать этого бота в Django для последующего развертывания. Дополнительно бот будет парсить данные с сайта Avito, предоставляя пользователям возможность получать актуальные данные по интересующим их товарам.
Шаг 1: Установка необходимых библиотек
Для начала работы с ботом на Python, необходимо установить следующие модули:
pyTelegramBotAPI
(Telebot) — для взаимодействия с Telegram API.requests
— для отправки HTTP-запросов, необходимых для парсинга данных с Avito.beautifulsoup4
— для работы с HTML-страницами, которые мы будем парсить.django
— для запуска приложения на Django.
Для установки используем команду:
pip install pyTelegramBotAPI requests beautifulsoup4 django
Шаг 2: Создание телеграмм-бота
Получение токена
Для создания бота необходимо получить токен у @BotFather. После создания бота, вы получите уникальный API-токен, который понадобится для взаимодействия с Telegram API.
Написание кода бота
Создаём файл bot.py
, который будет содержать основной функционал бота. Импортируем необходимые библиотеки:
import telebot
import requests
from bs4 import BeautifulSoup
API_TOKEN = 'ВАШ_ТОКЕН_БОТА'
bot = telebot.TeleBot(API_TOKEN)
Добавление команды для парсинга Avito
Теперь создадим команду, которая будет парсить данные с Avito по запросу пользователя. Допустим, мы будем парсить данные о продаже автомобилей:
def parse_avito(search_query):
url = f"https://www.avito.ru/rossiya/avtomobili?s=104&q={search_query}"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
cars = []
for item in soup.find_all('div', class_='iva-item-content'):
title = item.find('h3').text
price = item.find('span', class_='price-text').text
link = 'https://www.avito.ru' + item.find('a')['href']
cars.append(f"{title}: {price} \nСсылка: {link}")
return cars
@bot.message_handler(commands=['start'])
def start(message):
bot.send_message(message.chat.id, "Привет! Я помогу найти авто на Avito. Введите запрос в формате /search название авто")
@bot.message_handler(commands=['search'])
def search(message):
search_query = message.text.split(maxsplit=1)[1]
cars = parse_avito(search_query)
if cars:
for car in cars:
bot.send_message(message.chat.id, car)
else:
bot.send_message(message.chat.id, "Ничего не найдено")
bot.polling()
Теперь наш бот готов к взаимодействию с пользователями. При вводе команды /search
бот будет отправлять HTTP-запрос на сайт Avito, парсить HTML-страницу и возвращать результаты пользователю.
Шаг 3: Интеграция бота с Django
Создание Django проекта
Для интеграции бота в Django нам нужно создать новый Django-проект. Используем команду:
django-admin startproject avito_bot
Перейдём в директорию проекта:
cd avito_bot
Создадим приложение для бота:
python manage.py startapp bot_app
Настройка проекта
В файле settings.py
добавляем наше приложение в INSTALLED_APPS
:
INSTALLED_APPS = [
# ...
'bot_app',
]
Создание представления для запуска бота
Внутри приложения bot_app
создадим представление для работы с нашим ботом. В файле views.py
добавляем следующий код:
from django.http import HttpResponse
from .bot import bot
def run_bot(request):
bot.polling()
return HttpResponse("Телеграмм-бот запущен")
В файле urls.py
зарегистрируем маршрут для запуска бота:
from django.urls import path
from .views import run_bot
urlpatterns = [
path('run-bot/', run_bot),
]
Запуск Django проекта
Запустим сервер Django:
python manage.py runserver
Теперь при переходе по адресу http://localhost:8000/run-bot/
ваш бот начнет свою работу.
Шаг 4: Развертывание проекта на сервере
Для того чтобы ваш бот мог работать в постоянном режиме, необходимо развернуть Django-проект на сервере. Рассмотрим основные шаги:
- Установка и настройка сервера. Например, для развертывания можно использовать Ubuntu сервер с Gunicorn и Nginx.
- Настройка виртуального окружения для проекта Django.
- Запуск Django проекта с помощью Gunicorn для обработки запросов к боту.
- Настройка системы автозапуска для Gunicorn, чтобы бот автоматически запускался при перезагрузке сервера.
Заключение
В данной статье мы разобрали процесс создания телеграмм-бота с использованием библиотеки pyTelegramBotAPI
, а также его интеграцию в Django. Наш бот умеет парсить данные с сайта Avito, предоставляя пользователям актуальную информацию по запросам. После развертывания на сервере бот будет доступен в любое время для работы с пользователями.
С таким подходом можно легко настроить бота под разные сценарии, используя дополнительные возможности Django и другие инструменты Python.