bot prime refactor. Notification events & messages

This commit is contained in:
2025-08-03 21:42:07 +09:00
parent 842710fe5c
commit becf4f5c99
22 changed files with 431 additions and 139 deletions

View File

@@ -1,6 +1,7 @@
from django.db import models
class BotConfig(models.Model):
bot_token = models.CharField(max_length=255, help_text="Токен для подключения к Telegram API")
channel_id = models.CharField(max_length=100, help_text="ID канала/чата, куда бот будет отправлять сообщения")
@@ -44,7 +45,7 @@ class WelcomeMessage(models.Model):
help_text="Текст, который будет отправлен при запуске команды /start"
)
welcome_image = models.ImageField(
upload_to='static/upload_image/',
upload_to='welcome_messages/',
verbose_name="Приветственное изображение",
blank=True,
null=True,
@@ -98,3 +99,38 @@ class WelcomeMessage(models.Model):
def __str__(self):
return f"Приветствие для {self.bot}"
class BotMessage(models.Model):
name = models.CharField("Название сообщения", max_length=100)
text = models.TextField("Текст", blank=True)
image = models.ImageField("Картинка", upload_to="bot_messages/", blank=True, null=True)
buttons_json = models.JSONField("Кнопки (JSON-формат)", blank=True, null=True)
class Meta:
verbose_name = "Сообщение"
verbose_name_plural = "Сообщения"
def __str__(self):
return self.name
class BotEventMessageConfig(models.Model):
EVENT_CHOICES = [
('welcome', 'Приветствие'),
('draw_started', 'Розыгрыш начат'),
('draw_finished', 'Розыгрыш завершен'),
('winner_announced', 'Объявление победителя'),
('guest_binding', 'Подтверждение гостя'),
# и другие
]
event = models.CharField("Событие", max_length=50, choices=EVENT_CHOICES, unique=True)
message = models.ForeignKey(BotMessage, on_delete=models.CASCADE, related_name="event_configs")
enabled = models.BooleanField("Активно", default=True)
class Meta:
verbose_name = "Событие сообщения"
verbose_name_plural = "События сообщений"
def __str__(self):
return f"{self.get_event_display()}{self.message.name}"