70 lines
4.9 KiB
Python
70 lines
4.9 KiB
Python
# Generated by Django 5.2.5 on 2025-08-08 02:33
|
||
|
||
import django.db.models.deletion
|
||
import django.utils.timezone
|
||
from django.db import migrations, models
|
||
|
||
|
||
class Migration(migrations.Migration):
|
||
|
||
initial = True
|
||
|
||
dependencies = [
|
||
]
|
||
|
||
operations = [
|
||
migrations.CreateModel(
|
||
name='TelegramBot',
|
||
fields=[
|
||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||
('name', models.CharField(help_text='Произвольное имя бота в проекте', max_length=100)),
|
||
('username', models.CharField(blank=True, help_text='@username в Telegram', max_length=100)),
|
||
('token', models.CharField(help_text='Токен от @BotFather', max_length=200)),
|
||
('is_active', models.BooleanField(default=True, help_text='Если включен — может быть запущен runbots')),
|
||
],
|
||
options={
|
||
'verbose_name': 'Telegram бот',
|
||
'verbose_name_plural': 'Telegram боты',
|
||
'ordering': ('-is_active', 'name'),
|
||
},
|
||
),
|
||
migrations.CreateModel(
|
||
name='BotConfig',
|
||
fields=[
|
||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||
('parse_mode', models.CharField(choices=[('HTML', 'HTML'), ('MarkdownV2', 'MarkdownV2'), ('None', 'None')], default='HTML', help_text='Режим парсинга сообщений (или None для обычного текста)', max_length=20)),
|
||
('allowed_updates', models.JSONField(blank=True, default=list, help_text="Список типов апдейтов, например ['message','my_chat_member','chat_member']")),
|
||
('admin_user_ids', models.JSONField(blank=True, default=list, help_text='Список Telegram user_id, имеющих права администратора')),
|
||
('webhook_url', models.URLField(blank=True, default='', help_text='URL вебхука (если используете вебхуки)')),
|
||
('use_webhook', models.BooleanField(default=False, help_text='Включить режим webhook вместо polling')),
|
||
('bot', models.OneToOneField(help_text='Какому боту принадлежит конфигурация', on_delete=django.db.models.deletion.CASCADE, to='bot.telegrambot')),
|
||
],
|
||
options={
|
||
'verbose_name': 'Конфигурация бота',
|
||
'verbose_name_plural': 'Конфигурации ботов',
|
||
},
|
||
),
|
||
migrations.CreateModel(
|
||
name='TelegramChat',
|
||
fields=[
|
||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||
('chat_id', models.BigIntegerField(help_text='Идентификатор чата в Telegram (может быть до ~52 бит)')),
|
||
('type', models.CharField(choices=[('private', 'private'), ('group', 'group'), ('supergroup', 'supergroup'), ('channel', 'channel')], help_text='Тип чата', max_length=20)),
|
||
('title', models.CharField(blank=True, default='', help_text='Название (для групп/каналов)', max_length=255)),
|
||
('username', models.CharField(blank=True, default='', help_text='Username чата/канала (если есть)', max_length=255)),
|
||
('is_member', models.BooleanField(default=True, help_text='Состоит ли бот в чате сейчас')),
|
||
('joined_at', models.DateTimeField(default=django.utils.timezone.now, help_text='Когда бот был добавлен')),
|
||
('left_at', models.DateTimeField(blank=True, help_text='Когда бот покинул чат', null=True)),
|
||
('last_message_at', models.DateTimeField(blank=True, help_text='Когда последний раз видели сообщение в этом чате', null=True)),
|
||
('bot', models.ForeignKey(help_text='К какому боту относится этот чат', on_delete=django.db.models.deletion.CASCADE, related_name='chats', to='bot.telegrambot')),
|
||
],
|
||
options={
|
||
'verbose_name': 'Telegram чат',
|
||
'verbose_name_plural': 'Telegram чаты',
|
||
'ordering': ('-is_member', '-joined_at'),
|
||
'indexes': [models.Index(fields=['bot', 'chat_id'], name='bot_telegra_bot_id_ac3d0d_idx'), models.Index(fields=['bot', 'type'], name='bot_telegra_bot_id_3a438c_idx'), models.Index(fields=['bot', 'is_member'], name='bot_telegra_bot_id_e25f2b_idx')],
|
||
'constraints': [models.UniqueConstraint(fields=('bot', 'chat_id'), name='uniq_bot_chat')],
|
||
},
|
||
),
|
||
]
|