codeFlowType:
codeWrite
codeFlowLang:
Python
Телеграмм бот На Django для сети кофеен с программой лояльности и накоплением баллов
Создание Telegram-бота на Django для сети кофеен с программой лояльности и накоплением баллов — это комплексная задача. Я предложу вам упрощенный пример с основными функциональными частями, которые вы сможете дополнить по необходимости.
Перед началом, убедитесь, что у вас установлены необходимые библиотеки. Вам понадобятся Django
, python-telegram-bot
, и django-extensions
. Установите их с помощью:
pip install django python-telegram-bot django-extensions
django-admin startproject coffee_loyalty
cd coffee_loyalty
python manage.py startapp bot
В файле 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
settings.py
INSTALLED_APPS = [
...
'bot',
]
python manage.py makemigrations
python manage.py migrate
Создайте файл 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()
Для того чтобы запустить бота, вы можете создать отдельный файл, например 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
ДляProduction-версии можно использовать webhook для бота, но для упрощения примера выше используется polling.
Теперь у вас есть базовая структура для Telegram-бота на Django с возможностью получать и добавлять баллы. Вы можете расширять функциональность, добавляя больше команд и методов работы с пользователями и баллами.
Не забудьте изменить YOUR_TELEGRAM_BOT_TOKEN
на ваш фактический токен бота, полученный от BotFather.