# Generated by Django 6.1.1 on 2026-09-24 12:00 import django.db.models.deletion from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ] operations = [ migrations.CreateModel( name='Bot', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('token', models.CharField(max_length=128, unique=True)), ('username', models.CharField(blank=True, editable=False, max_length=64)), ('name', models.CharField(blank=True, editable=False, max_length=128)), ('interface', models.CharField(blank=True, help_text='Класс, определяющий поведение бота. Меняется на лету.', max_length=255)), ('is_active', models.BooleanField(default=False, editable=False, verbose_name='опубликован')), ('update_offset', models.BigIntegerField(default=0, editable=False)), ('heartbeat_at', models.DateTimeField(blank=True, editable=False, null=True)), ('last_error', models.TextField(blank=True, editable=False)), ('created_at', models.DateTimeField(auto_now_add=True)), ], options={ 'verbose_name': 'бот', 'verbose_name_plural': 'боты', }, ), migrations.CreateModel( name='User', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('tg_id', models.BigIntegerField(unique=True)), ('username', models.CharField(blank=True, max_length=64)), ('first_name', models.CharField(blank=True, max_length=128)), ('last_name', models.CharField(blank=True, max_length=128)), ('language_code', models.CharField(blank=True, max_length=16)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ], options={ 'verbose_name': 'пользователь telegram', 'verbose_name_plural': 'пользователи telegram', }, ), migrations.CreateModel( name='Chat', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('chat_id', models.BigIntegerField()), ('type', models.CharField(max_length=16)), ('title', models.CharField(blank=True, max_length=255)), ('state', models.CharField(blank=True, help_text='Состояние диалога, задается интерфейсом бота', max_length=128)), ('data', models.JSONField(blank=True, default=dict, help_text='Данные диалога, задаются интерфейсом бота')), ('created_at', models.DateTimeField(auto_now_add=True)), ('deleted_at', models.DateTimeField(blank=True, null=True)), ('bot', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='chats', to='Telegram.bot')), ('user', models.ForeignKey(blank=True, help_text='Собеседник в личном чате', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='chats', to='Telegram.user')), ], options={ 'verbose_name': 'чат', 'verbose_name_plural': 'чаты', }, ), migrations.CreateModel( name='Message', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('direction', models.CharField(choices=[('in', 'входящее'), ('out', 'исходящее')], max_length=3)), ('message_id', models.BigIntegerField(blank=True, null=True)), ('text', models.TextField(blank=True)), ('created_at', models.DateTimeField(auto_now_add=True)), ('chat', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='messages', to='Telegram.chat')), ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='messages', to='Telegram.user')), ], options={ 'verbose_name': 'сообщение', 'verbose_name_plural': 'сообщения', 'ordering': ['-created_at'], }, ), migrations.AddConstraint( model_name='chat', constraint=models.UniqueConstraint(fields=('bot', 'chat_id'), name='telegram_chat_unique'), ), ]