Телеграмм бот На Django для сети кофеен с программой

Телеграмм бот На Django для сети кофеен с программой лояльности и накоплением баллов
Дополнительные параметры: codeFlowType: codeWrite codeFlowLang: Python
Создано: 27.04.2025 18:50

Телеграмм бот На Django для сети кофеен с программой лояльности и накоплением баллов

Создание Telegram-бота на Django для сети кофеен с программой лояльности и накоплением баллов — это комплексная задача. Я предложу вам упрощенный пример с основными функциональными частями, которые вы сможете дополнить по необходимости.

Перед началом, убедитесь, что у вас установлены необходимые библиотеки. Вам понадобятся Django, python-telegram-bot, и django-extensions. Установите их с помощью:

pip install django python-telegram-bot django-extensions

Шаг 1: Создадим новый проект Django

django-admin startproject coffee_loyalty
cd coffee_loyalty

Шаг 2: Создадим приложение для бота

python manage.py startapp bot

Шаг 3: Настройка модели для пользователей и накопленных баллов

В файле bot/models.py определим модели:

from django.db import models

class User(models.Model):
    telegram_id = models.CharField(max_length=100, unique=True)
    points = models.IntegerField(default=0)

    def __str__(self):
        return self.telegram_id

Шаг 4: Добавьте приложение в settings.py

INSTALLED_APPS = [
    ...
    'bot',
]

Шаг 5: Создайте миграции и примените их

python manage.py makemigrations
python manage.py migrate

Шаг 6: Реализация Telegram-бота

Создайте файл bot/telegram_bot.py и добавьте следующий код:

import os
from django.utils import timezone
from telegram import Update
from telegram.ext import Updater, CommandHandler, CallbackContext
from .models import User

TELEGRAM_TOKEN = 'YOUR_TELEGRAM_BOT_TOKEN'

def start(update: Update, context: CallbackContext) -> None:
    user_id = update.effective_user.id
    user, created = User.objects.get_or_create(telegram_id=user_id)
    update.message.reply_text(f"Добро пожаловать! У вас {user.points} баллов.")

def points(update: Update, context: CallbackContext) -> None:
    user_id = update.effective_user.id
    user = User.objects.get(telegram_id=user_id)
    update.message.reply_text(f"У вас {user.points} баллов.")

def add_points(update: Update, context: CallbackContext) -> None:
    user_id = update.effective_user.id
    user = User.objects.get(telegram_id=user_id)
    points_to_add = 10  # пример добавления 10 баллов
    user.points += points_to_add
    user.save()
    update.message.reply_text(f"Добавлено {points_to_add} баллов! Теперь у вас {user.points} баллов.")

def main():
    updater = Updater(TELEGRAM_TOKEN)
    dp = updater.dispatcher
    
    dp.add_handler(CommandHandler("start", start))
    dp.add_handler(CommandHandler("points", points))
    dp.add_handler(CommandHandler("add_points", add_points))
    
    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    main()

Шаг 7: Запуск бота

Для того чтобы запустить бота, вы можете создать отдельный файл, например run_bot.py, и добавить в него:

import os
import django
from bot.telegram_bot import main

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "coffee_loyalty.settings")
django.setup()

if __name__ == "__main__":
    main()

Затем запустите бота:

python run_bot.py

Шаг 8: Настройка webhook (необязательно)

ДляProduction-версии можно использовать webhook для бота, но для упрощения примера выше используется polling.

Заключение

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

Не забудьте изменить YOUR_TELEGRAM_BOT_TOKEN на ваш фактический токен бота, полученный от BotFather.