bot prime refactor. Notification events & messages
This commit is contained in:
@@ -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}"
|
||||
|
||||
Reference in New Issue
Block a user