Чтобы использовать Django и pyTelegramBotAPI одновременно, вам необходимо внести несколько изменений в структуру вашего проекта.
1. Установите необходимые пакеты:
pip install django python-telegram-bot
2. Создайте новый проект Django:
django-admin startproject myproject
3. Зайдите в директорию вашего проекта и создайте новое приложение Django:
cd myproject django-admin startapp myapp
4. Откройте файл settings.py
в директории myproject/myproject
и добавьте 'myapp'
в INSTALLED_APPS
:
INSTALLED_APPS = [ ... 'myapp', ... ]
5. Создайте модель для хранения данных о пользователях Telegram. В файле myapp/models.py
добавьте следующий код:
from django.db import models class TelegramUser(models.Model): chat_id = models.IntegerField(unique=True) username = models.CharField(max_length=255, null=True, blank=True) ...
6. Выполните миграции для создания таблицы в базе данных:
python manage.py makemigrations python manage.py migrate
7. Создайте файл myapp/telegram_bot.py
и добавьте туда следующий код для инициализации бота и обработки сообщений:
import telebot from myapp.models import TelegramUser bot = telebot.TeleBot('your_bot_token') @bot.message_handler(func=lambda message: True) def handle_message(message): chat_id = message.chat.id username = message.chat.username # Обработка сообщения ... # Сохранение данных пользователя в базу данных TelegramUser.objects.get_or_create(chat_id=chat_id, username=username) bot.polling()
8. Добавьте в urls.py
вашего проекта путь для обработки вебхуков Telegram. Откройте файл myproject/myproject/urls.py
и добавьте следующий код:
from django.urls import path from myapp import views urlpatterns = [ ... path('your_bot_token/', views.index), ... ]
9. Создайте файл myapp/views.py
и напишите функцию для обработки вебхуков:
from django.http import HttpResponse from django.views.decorators.csrf import csrf_exempt import telebot @csrf_exempt def index(request): if request.method == 'POST': json_string = request.body.decode("UTF-8") update = telebot.types.Update.de_json(json_string) bot.process_new_updates([update]) return HttpResponse('OK')
10. Теперь вы можете запустить сервер Django:
python manage.py runserver
11. Запустите вашего бота в другом терминале:
python manage.py telegram_bot.py
Теперь ваш Django-проект будет обрабатывать входящие сообщения от пользователей Telegram и сохранять информацию о них в базу данных. Вы можете расширить функциональность бота и добавить дополнительные возможности, такие как отправка сообщений пользователю или работа с inline-кнопками.