Как использовать одновременно django и pyTelegrambotAPI?

Чтобы использовать Django и pyTelegramBotAPI одновременно, вам необходимо внести несколько изменений в структуру вашего проекта.

  1. Установите необходимые пакеты:
pip install django python-telegram-bot
  1. Создайте новый проект Django:
django-admin startproject myproject
  1. Зайдите в директорию вашего проекта и создайте новое приложение Django:
cd myproject
django-admin startapp myapp
  1. Откройте файл settings.py в директории myproject/myproject и добавьте 'myapp' в INSTALLED_APPS:
INSTALLED_APPS = [
    ...
    'myapp',
    ...
]
  1. Создайте модель для хранения данных о пользователях 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)
    ...
  1. Выполните миграции для создания таблицы в базе данных:
python manage.py makemigrations
python manage.py migrate
  1. Создайте файл 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()
  1. Добавьте в urls.py вашего проекта путь для обработки вебхуков Telegram. Откройте файл myproject/myproject/urls.py и добавьте следующий код:
from django.urls import path
from myapp import views

urlpatterns = [
    ...
    path('your_bot_token/', views.index),
    ...
]
  1. Создайте файл 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')
  1. Теперь вы можете запустить сервер Django:
python manage.py runserver
  1. Запустите вашего бота в другом терминале:
python manage.py telegram_bot.py

Теперь ваш Django-проект будет обрабатывать входящие сообщения от пользователей Telegram и сохранять информацию о них в базу данных. Вы можете расширить функциональность бота и добавить дополнительные возможности, такие как отправка сообщений пользователю или работа с inline-кнопками.