Files
tg_autopost/bot/migrations/0001_initial.py
2025-08-08 11:37:11 +09:00

70 lines
4.9 KiB
Python
Raw 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.

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