Files
lottery_ycms/lottery/bot/models.py

136 lines
5.2 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 канала/чата, куда бот будет отправлять сообщения")
bot_name = models.CharField(max_length=100, help_text="Отображаемое имя бота")
chat_enabled = models.BooleanField(
default=True,
verbose_name="Чат включён",
help_text="Если выключено, то глобально блокируется рассылка сообщений в чате."
)
global_block_message = models.TextField(
blank=True,
null=True,
verbose_name="Сообщение о глобальном блоке",
help_text="Сообщение, которое показывается пользователям, если чат отключён."
)
welcome_messages = models.ManyToManyField('WelcomeMessage', blank=True, verbose_name="Варианты приветствия")
active_welcome = models.ForeignKey(
'WelcomeMessage',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name="used_by",
verbose_name="Активное приветствие"
)
is_active = models.BooleanField(default=False, verbose_name="Включен")
def __str__(self):
return self.bot_name
class Meta:
verbose_name = "Настройка бота"
verbose_name_plural = "Настройки Ботов"
class WelcomeMessage(models.Model):
bot = models.ForeignKey(BotConfig, on_delete=models.CASCADE, verbose_name="Бот")
welcome_message = models.TextField(
verbose_name="Приветственное сообщение",
blank=True,
null=True,
help_text="Текст, который будет отправлен при запуске команды /start"
)
welcome_image = models.ImageField(
upload_to='welcome_messages/',
verbose_name="Приветственное изображение",
blank=True,
null=True,
help_text="Загрузите изображение для приветствия"
)
admin_contact = models.CharField(
max_length=255,
verbose_name="Контакт администратора",
blank=True,
null=True,
help_text="Ссылка или контакт для связи с администратором"
)
channel_link = models.URLField(
verbose_name="Ссылка на канал",
blank=True,
null=True,
help_text="URL канала бота"
)
group_link = models.URLField(
verbose_name="Ссылка на группу",
blank=True,
null=True,
help_text="URL группы бота"
)
custom_link1_name = models.CharField(
max_length=100,
verbose_name="Название кастомной ссылки 1",
blank=True,
null=True
)
custom_link1_url = models.URLField(
verbose_name="URL кастомной ссылки 1",
blank=True,
null=True
)
custom_link2_name = models.CharField(
max_length=100,
verbose_name="Название кастомной ссылки 2",
blank=True,
null=True
)
custom_link2_url = models.URLField(
verbose_name="URL кастомной ссылки 2",
blank=True,
null=True
)
class Meta:
verbose_name = "Приветственное сообщение"
verbose_name_plural = "Приветственные сообщения"
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}"