# 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')], }, ), ]