diff --git a/.env b/.env index 2a7a3f8..07b9c3d 100644 --- a/.env +++ b/.env @@ -6,6 +6,8 @@ LOG_FILE = /opt/testbot-git/logs/testzilantposter.log WORKMODE = "VOLK" + + # Webhook Responder-bot WEBHOOK_URL = "https://bot.aabpro.ru/testbot" WEBHOOK_PORT = 5005 @@ -84,9 +86,6 @@ CHANNEL_ID = "@posto1638" MAX_CAPTION_LENGTH = 1000 MAX_TEXT_LENGTH = 4000 -# Button scripts -# RESCAN_SCRIPT = "vk_load.py" -# PUBLISH_SCRIPT = "tg_publish.py" # Zilant API call - План Захвата # @@ -96,6 +95,12 @@ PZK_PREFIX = "https://reg.konvent.ru/zk2025/draft/plan/api/add/" EVT_PREFIX = "https://reg.konvent.ru/zk2025/events/actions/api/" DESC_PREFIX = "https://reg.konvent.ru/zk2025/events/actions/" +# VOLK mode API links +# add category ID (volk24_larp for ex.) +VOLK_CATEGORY_LIST = "https://base-dev.volk-nn.ru/api/categories?event=volk24&form=volk24_event" +VOLK_CATEGORY_DESC_PREFIX = "https://base-dev.volk-nn.ru/api/category?event=volk24&form=volk24_event&category=" +VOLK_EVENT_LIST_PREFIX = "https://base-dev.volk-nn.ru/api/applications?event=volk24&form=volk24_event&apps_on_page=100&page=0&category=" + # Event status IS_EVENT = true AUTO_PUBLISH = false @@ -106,7 +111,7 @@ USE_SUBSCRIPTION_BOT = false # OpenRouter OR_KEY = "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" -# OR_MODEL_NAME = "deepseek/deepseek-chat-v3.1" OR_MODEL_NAME = "qwen/qwen3-vl-235b-a22b-instruct" +# OR_MODEL_NAME = "deepseek/deepseek-chat-v3.1" # OR_MODEL_NAME = "deepseek/deepseek-r1-0528:free" # OR_MODEL_NAME = "qwen/qwen3-coder:free" diff --git a/db_edit.py b/db_edit.py index 7d9201b..5e9848c 100644 --- a/db_edit.py +++ b/db_edit.py @@ -1472,51 +1472,6 @@ def init_db(): ensure_database_structure() print("Структура базы данных проверена и создана при необходимости") - # Проверяем и создаем таблицу events, если она не существует -# with db.conn.cursor() as cursor: -# cursor.execute(""" -# CREATE TABLE IF NOT EXISTS events ( -# id INT AUTO_INCREMENT PRIMARY KEY, -# id_event BIGINT NOT NULL, -# number BIGINT NOT NULL, -# unit_name VARCHAR(255), -# name VARCHAR(255), -# about VARCHAR(2048), -# about_social_picture VARCHAR(2048), -# modified DATETIME NULL, -# added DATETIME NULL, -# tags VARCHAR(255), -# is_canceled BOOLEAN DEFAULT 0, -# accepted BOOLEAN DEFAULT 0, -# denied BOOLEAN DEFAULT 0, -# is_visible BOOLEAN DEFAULT 0, -# marked_to_publication BOOLEAN DEFAULT 0, -# is_posted_tg BOOLEAN DEFAULT 0, -# tg_message_id BIGINT NULL DEFAULT NULL, -# tg_posted_date DATETIME NULL, -# announcement_link BIGINT NULL DEFAULT NULL -# ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 -# """) -# db.conn.commit() -# print("Таблица events проверена и создана при необходимости") - - # Создаем администратора по умолчанию - with db.conn.cursor() as cursor: - cursor.execute("SELECT COUNT(*) as count FROM users") - if cursor.fetchone()['count'] == 0: - username = os.getenv('DEFNM') - password = os.getenv('DEFPW') - if username and password: - hashed_password = generate_password_hash(password) - cursor.execute( - "INSERT INTO users (username, password) VALUES (%s, %s)", - (username, hashed_password) - ) - print(f"Created default user: {username}") - else: - print("Environment variables DEFNM/DEFPW not set. Admin not created.") - - db.conn.commit() except Exception as e: print(f"Database initialization error: {str(e)}") raise diff --git a/ensure_db.py b/ensure_db.py index 8fe78d3..f5de8e4 100644 --- a/ensure_db.py +++ b/ensure_db.py @@ -6,6 +6,7 @@ import random from datetime import datetime from mysql.connector import errorcode from dotenv import load_dotenv +from werkzeug.security import generate_password_hash # Загрузка переменных окружения load_dotenv() @@ -123,7 +124,7 @@ def ensure_database_structure(): number BIGINT NOT NULL, unit_name VARCHAR(255), name VARCHAR(255), - about VARCHAR(2048), + about VARCHAR(4096), about_social_picture VARCHAR(2048), modified DATETIME NULL, added DATETIME NULL, @@ -154,6 +155,14 @@ def ensure_database_structure(): REFERENCES events(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 + ''', + 'categories': ''' + CREATE TABLE categories ( + AUTO_ID INT AUTO_INCREMENT PRIMARY KEY, + NUMBER BIGINT, + ID VARCHAR(255), + TITLE VARCHAR(2048) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ''' } @@ -178,6 +187,25 @@ def ensure_database_structure(): log_message(f"Error checking/creating table {table_name}: {err}") raise err + # Создание дефолтного админа, если таблица users пуста + try: + cursor.execute("SELECT COUNT(*) as count FROM users") + user_count = cursor.fetchone()[0] + if user_count == 0: + username = os.getenv('DEFNM') + password = os.getenv('DEFPW') + if username and password: + hashed_password = generate_password_hash(password) + cursor.execute( + "INSERT INTO users (username, password) VALUES (%s, %s)", + (username, hashed_password) + ) + log_message(f"Created default admin user: {username}") + else: + log_message("Environment variables DEFNM/DEFPW not set. Admin not created.") + except mysql.connector.Error as err: + log_message(f"Error creating default admin: {err}") + # Проверка и добавление новых полей в существующие таблицы table_alterations = { 'posts': [ @@ -254,8 +282,14 @@ def ensure_database_structure(): 'CREATE UNIQUE INDEX IF NOT EXISTS uniq_post_event ON interlinks (post_id, event_id)' ] + # Создание индексов для таблицы categories + categories_indexes = [ + 'CREATE INDEX IF NOT EXISTS idx_categories_number ON categories (NUMBER)', + 'CREATE INDEX IF NOT EXISTS idx_categories_id ON categories (ID)' + ] + # Объединяем все индексы - all_indexes = marks_indexes + marks_evt_indexes + events_indexes + interlinks_indexes + all_indexes = marks_indexes + marks_evt_indexes + events_indexes + interlinks_indexes + categories_indexes for index_sql in all_indexes: try: