smart-bot-factory 0.3.6__tar.gz → 0.3.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of smart-bot-factory might be problematic. Click here for more details.
- smart_bot_factory-0.3.8/.pre-commit-config.yaml +23 -0
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/PKG-INFO +3 -1
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/publish.py +42 -37
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/pyproject.toml +3 -1
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/admin/__init__.py +7 -7
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/admin/admin_events.py +483 -383
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/admin/admin_logic.py +234 -158
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/admin/admin_manager.py +68 -53
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/admin/admin_tester.py +46 -40
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/admin/timeout_checker.py +201 -153
- smart_bot_factory-0.3.8/smart_bot_factory/aiogram_calendar/__init__.py +14 -0
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/aiogram_calendar/common.py +12 -18
- smart_bot_factory-0.3.8/smart_bot_factory/aiogram_calendar/dialog_calendar.py +259 -0
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/aiogram_calendar/schemas.py +49 -28
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/aiogram_calendar/simple_calendar.py +94 -50
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/analytics/analytics_manager.py +414 -392
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/cli.py +204 -148
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/config.py +123 -102
- smart_bot_factory-0.3.8/smart_bot_factory/configs/growthmed-october-24/tests/quick_scenarios.yaml +133 -0
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/core/bot_utils.py +480 -324
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/core/conversation_manager.py +287 -200
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/core/decorators.py +1145 -739
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/core/message_sender.py +287 -266
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/core/router.py +170 -100
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/core/router_manager.py +121 -83
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/core/states.py +4 -3
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/creation/__init__.py +1 -1
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/creation/bot_builder.py +320 -242
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/creation/bot_testing.py +440 -365
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/dashboard/__init__.py +1 -3
- smart_bot_factory-0.3.8/smart_bot_factory/event/__init__.py +7 -0
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/handlers/handlers.py +682 -466
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/integrations/openai_client.py +218 -168
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/integrations/supabase_client.py +928 -637
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/message/__init__.py +18 -22
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/router/__init__.py +2 -2
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/setup_checker.py +162 -126
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/supabase/__init__.py +1 -1
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/supabase/client.py +631 -515
- smart_bot_factory-0.3.8/smart_bot_factory/utils/__init__.py +9 -0
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/utils/debug_routing.py +38 -27
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/utils/prompt_loader.py +153 -120
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/utils/user_prompt_loader.py +55 -56
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/utm_link_generator.py +123 -116
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/uv.lock +38 -1
- smart_bot_factory-0.3.8/valera.py +56 -0
- smart_bot_factory-0.3.6/best-valera.py +0 -280
- smart_bot_factory-0.3.6/bots/best-valera/prompts/final_instructions.txt +0 -214
- smart_bot_factory-0.3.6/bots/best-valera/tests/quick_scenarios.yaml +0 -66
- smart_bot_factory-0.3.6/bots/valera/tests/quick_scenarios.yaml +0 -66
- smart_bot_factory-0.3.6/smart_bot_factory/aiogram_calendar/__init__.py +0 -6
- smart_bot_factory-0.3.6/smart_bot_factory/aiogram_calendar/dialog_calendar.py +0 -197
- smart_bot_factory-0.3.6/smart_bot_factory/configs/growthmed-october-24/prompts/2product_info.txt +0 -582
- smart_bot_factory-0.3.6/smart_bot_factory/configs/growthmed-october-24/prompts/3objection_handling.txt +0 -66
- smart_bot_factory-0.3.6/smart_bot_factory/configs/growthmed-october-24/prompts/help_message.txt +0 -28
- smart_bot_factory-0.3.6/smart_bot_factory/configs/growthmed-october-24/prompts/welcome_message.txt +0 -8
- smart_bot_factory-0.3.6/smart_bot_factory/configs/growthmed-october-24/tests/realistic_scenarios.yaml +0 -108
- smart_bot_factory-0.3.6/smart_bot_factory/configs/growthmed-october-24/tests/scenario_examples.yaml +0 -46
- smart_bot_factory-0.3.6/smart_bot_factory/configs/growthmed-october-24/welcome_file/welcome_file_msg.txt +0 -16
- smart_bot_factory-0.3.6/smart_bot_factory/configs/growthmed-october-24/welcome_file//320/247/320/265/320/272 /320/273/320/270/321/201/321/202 /320/277/320/276 152/320/244/320/227 /320/270 323/320/244/320/227 /320/264/320/273/321/217 /320/274/320/265/320/264/320/270/321/206/320/270/320/275/321/213.pdf +0 -0
- smart_bot_factory-0.3.6/smart_bot_factory/event/__init__.py +0 -12
- smart_bot_factory-0.3.6/smart_bot_factory/utils/__init__.py +0 -10
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/.github/ISSUE_TEMPLATE//342/234/250-/320/267/320/260/320/277/321/200/320/276/321/201-/321/204/321/203/320/275/320/272/321/206/320/270/320/270.md" +0 -0
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/.github/ISSUE_TEMPLATE//360/237/220/233-/320/261/320/260/320/263-/321/200/320/265/320/277/320/276/321/200/321/202.md" +0 -0
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/.github/workflows/ci.yml +0 -0
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/.github/workflows/publish-private.yml +0 -0
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/.github/workflows/publish.yml +0 -0
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/.gitignore +0 -0
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/.python-version +0 -0
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/LICENSE +0 -0
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/README.md +0 -0
- {smart_bot_factory-0.3.6/bots/best-valera → smart_bot_factory-0.3.8/bots/valera}/prompts/1sales_context.txt +0 -0
- {smart_bot_factory-0.3.6/bots/best-valera → smart_bot_factory-0.3.8/bots/valera}/prompts/2product_info.txt +0 -0
- {smart_bot_factory-0.3.6/bots/best-valera → smart_bot_factory-0.3.8/bots/valera}/prompts/3objection_handling.txt +0 -0
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/bots/valera/prompts/final_instructions.txt +0 -0
- {smart_bot_factory-0.3.6/bots/best-valera → smart_bot_factory-0.3.8/bots/valera}/prompts/help_message.txt +0 -0
- {smart_bot_factory-0.3.6/bots/best-valera → smart_bot_factory-0.3.8/bots/valera}/prompts/welcome_message.txt +0 -0
- {smart_bot_factory-0.3.6/smart_bot_factory/configs/growthmed-october-24 → smart_bot_factory-0.3.8/bots/valera}/tests/quick_scenarios.yaml +0 -0
- {smart_bot_factory-0.3.6/bots/best-valera → smart_bot_factory-0.3.8/bots/valera}/tests/realistic_scenarios.yaml +0 -0
- {smart_bot_factory-0.3.6/bots/best-valera → smart_bot_factory-0.3.8/bots/valera}/tests/scenario_examples.yaml +0 -0
- {smart_bot_factory-0.3.6/bots/best-valera → smart_bot_factory-0.3.8/bots/valera}/welcome_files/welcome_file_msg.txt +0 -0
- {smart_bot_factory-0.3.6/bots/best-valera → smart_bot_factory-0.3.8/bots/valera}/welcome_files//320/247/320/265/320/272 /320/273/320/270/321/201/321/202 /320/277/320/276 152/320/244/320/227 /320/270 323/320/244/320/227 /320/264/320/273/321/217 /320/274/320/265/320/264/320/270/321/206/320/270/320/275/321/213.pdf" +0 -0
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/__init__.py +0 -0
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/configs/growthmed-october-24/prompts/1sales_context.txt +0 -0
- {smart_bot_factory-0.3.6/bots/valera → smart_bot_factory-0.3.8/smart_bot_factory/configs/growthmed-october-24}/prompts/2product_info.txt +0 -0
- {smart_bot_factory-0.3.6/bots/valera → smart_bot_factory-0.3.8/smart_bot_factory/configs/growthmed-october-24}/prompts/3objection_handling.txt +0 -0
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/configs/growthmed-october-24/prompts/final_instructions.txt +0 -0
- {smart_bot_factory-0.3.6/bots/valera → smart_bot_factory-0.3.8/smart_bot_factory/configs/growthmed-october-24}/prompts/help_message.txt +0 -0
- {smart_bot_factory-0.3.6/bots/valera → smart_bot_factory-0.3.8/smart_bot_factory/configs/growthmed-october-24}/prompts/welcome_message.txt +0 -0
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/configs/growthmed-october-24/reports/test_20250924_064229.txt +0 -0
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/configs/growthmed-october-24/reports/test_20250924_064335.txt +0 -0
- {smart_bot_factory-0.3.6 → smart_bot_factory-0.3.8}/smart_bot_factory/configs/growthmed-october-24/reports/test_20250924_064638.txt +0 -0
- {smart_bot_factory-0.3.6/bots/valera → smart_bot_factory-0.3.8/smart_bot_factory/configs/growthmed-october-24}/tests/realistic_scenarios.yaml +0 -0
- {smart_bot_factory-0.3.6/bots/valera → smart_bot_factory-0.3.8/smart_bot_factory/configs/growthmed-october-24}/tests/scenario_examples.yaml +0 -0
- {smart_bot_factory-0.3.6/bots/valera/welcome_files → smart_bot_factory-0.3.8/smart_bot_factory/configs/growthmed-october-24/welcome_file}/welcome_file_msg.txt +0 -0
- {smart_bot_factory-0.3.6/bots/valera/welcome_files → smart_bot_factory-0.3.8/smart_bot_factory/configs/growthmed-october-24/welcome_file}//320/247/320/265/320/272 /320/273/320/270/321/201/321/202 /320/277/320/276 152/320/244/320/227 /320/270 323/320/244/320/227 /320/264/320/273/321/217 /320/274/320/265/320/264/320/270/321/206/320/270/320/275/321/213.pdf" +0 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/psf/black
|
|
3
|
+
rev: 23.9.1
|
|
4
|
+
hooks:
|
|
5
|
+
- id: black
|
|
6
|
+
name: black (python)
|
|
7
|
+
|
|
8
|
+
- repo: https://github.com/pycqa/isort
|
|
9
|
+
rev: 5.11.2
|
|
10
|
+
hooks:
|
|
11
|
+
- id: isort
|
|
12
|
+
name: isort (python)
|
|
13
|
+
|
|
14
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
15
|
+
rev: v0.14.1
|
|
16
|
+
hooks:
|
|
17
|
+
- id: ruff-check
|
|
18
|
+
name: ruff lint
|
|
19
|
+
args: [--fix]
|
|
20
|
+
types_or: [python, pyi]
|
|
21
|
+
- id: ruff-format
|
|
22
|
+
name: ruff format
|
|
23
|
+
types_or: [python, pyi]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: smart-bot-factory
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.8
|
|
4
4
|
Summary: Библиотека для создания умных чат-ботов
|
|
5
5
|
Author-email: Kopatych <eserov73@gmail.com>
|
|
6
6
|
License: MIT
|
|
@@ -21,10 +21,12 @@ Classifier: Topic :: Communications :: Chat
|
|
|
21
21
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
22
22
|
Requires-Python: >=3.9
|
|
23
23
|
Requires-Dist: aiofiles>=23.0.0
|
|
24
|
+
Requires-Dist: aiogram-media-group>=0.5.1
|
|
24
25
|
Requires-Dist: aiogram>=3.4.1
|
|
25
26
|
Requires-Dist: click>=8.0.0
|
|
26
27
|
Requires-Dist: openai>=1.12.0
|
|
27
28
|
Requires-Dist: project-root-finder>=1.9
|
|
29
|
+
Requires-Dist: python-dateutil>=2.9.0.post0
|
|
28
30
|
Requires-Dist: python-dotenv>=1.0.1
|
|
29
31
|
Requires-Dist: pytz>=2023.3
|
|
30
32
|
Requires-Dist: pyyaml>=6.0.2
|
|
@@ -12,63 +12,68 @@ import re
|
|
|
12
12
|
import shutil
|
|
13
13
|
import subprocess
|
|
14
14
|
from pathlib import Path
|
|
15
|
+
|
|
15
16
|
from dotenv import load_dotenv
|
|
16
17
|
|
|
17
18
|
# Загружаем переменные из .env
|
|
18
19
|
load_dotenv()
|
|
19
20
|
|
|
21
|
+
|
|
20
22
|
def increment_version(version: str) -> str:
|
|
21
23
|
"""Увеличивает версию на 0.0.1"""
|
|
22
|
-
parts = version.split(
|
|
24
|
+
parts = version.split(".")
|
|
23
25
|
if len(parts) != 3:
|
|
24
26
|
raise ValueError(f"Неверный формат версии: {version}")
|
|
25
|
-
|
|
27
|
+
|
|
26
28
|
major, minor, patch = map(int, parts)
|
|
27
29
|
patch += 1
|
|
28
|
-
|
|
30
|
+
|
|
29
31
|
return f"{major}.{minor}.{patch}"
|
|
30
32
|
|
|
33
|
+
|
|
31
34
|
def update_version_in_toml():
|
|
32
35
|
"""Обновляет версию в pyproject.toml"""
|
|
33
36
|
toml_path = Path("pyproject.toml")
|
|
34
|
-
|
|
37
|
+
|
|
35
38
|
if not toml_path.exists():
|
|
36
39
|
raise FileNotFoundError("pyproject.toml не найден")
|
|
37
|
-
|
|
38
|
-
content = toml_path.read_text(encoding=
|
|
39
|
-
|
|
40
|
+
|
|
41
|
+
content = toml_path.read_text(encoding="utf-8")
|
|
42
|
+
|
|
40
43
|
# Находим текущую версию
|
|
41
44
|
version_match = re.search(r'^version\s*=\s*"([^"]+)"', content, re.MULTILINE)
|
|
42
45
|
if not version_match:
|
|
43
46
|
raise ValueError("Версия не найдена в pyproject.toml")
|
|
44
|
-
|
|
47
|
+
|
|
45
48
|
old_version = version_match.group(1)
|
|
46
49
|
new_version = increment_version(old_version)
|
|
47
|
-
|
|
50
|
+
|
|
48
51
|
# Обновляем версию
|
|
49
52
|
new_content = re.sub(
|
|
50
53
|
r'^version\s*=\s*"[^"]+"',
|
|
51
54
|
f'version = "{new_version}"',
|
|
52
55
|
content,
|
|
53
|
-
flags=re.MULTILINE
|
|
56
|
+
flags=re.MULTILINE,
|
|
54
57
|
)
|
|
55
|
-
|
|
56
|
-
toml_path.write_text(new_content, encoding=
|
|
57
|
-
|
|
58
|
+
|
|
59
|
+
toml_path.write_text(new_content, encoding="utf-8")
|
|
60
|
+
|
|
58
61
|
print(f"✅ Версия обновлена: {old_version} → {new_version}")
|
|
59
62
|
return new_version
|
|
60
63
|
|
|
64
|
+
|
|
61
65
|
def clean_dist():
|
|
62
66
|
"""Очищает папку dist/"""
|
|
63
67
|
dist_path = Path("dist")
|
|
64
|
-
|
|
68
|
+
|
|
65
69
|
if dist_path.exists():
|
|
66
70
|
shutil.rmtree(dist_path)
|
|
67
71
|
print("✅ Папка dist/ очищена")
|
|
68
|
-
|
|
72
|
+
|
|
69
73
|
dist_path.mkdir(exist_ok=True)
|
|
70
74
|
print("✅ Папка dist/ создана")
|
|
71
75
|
|
|
76
|
+
|
|
72
77
|
def build_package():
|
|
73
78
|
"""Собирает пакет через uv build"""
|
|
74
79
|
print("\n🔨 Сборка пакета...")
|
|
@@ -76,13 +81,14 @@ def build_package():
|
|
|
76
81
|
print("✅ Пакет собран")
|
|
77
82
|
return result.returncode == 0
|
|
78
83
|
|
|
84
|
+
|
|
79
85
|
def upload_to_pypi():
|
|
80
86
|
"""Загружает пакет в PyPI через twine"""
|
|
81
87
|
print("\n📤 Загрузка в PyPI...")
|
|
82
|
-
|
|
88
|
+
|
|
83
89
|
# Проверяем наличие токена в .env
|
|
84
|
-
pypi_token = os.getenv(
|
|
85
|
-
|
|
90
|
+
pypi_token = os.getenv("PYPI_API_TOKEN")
|
|
91
|
+
|
|
86
92
|
if not pypi_token:
|
|
87
93
|
print("⚠️ PYPI_API_TOKEN не найден в .env")
|
|
88
94
|
print("💡 Добавьте в .env файл:")
|
|
@@ -90,58 +96,57 @@ def upload_to_pypi():
|
|
|
90
96
|
print("\nИли введите вручную при запросе twine")
|
|
91
97
|
else:
|
|
92
98
|
print(f"✅ Используется API токен из .env (длина: {len(pypi_token)} символов)")
|
|
93
|
-
|
|
99
|
+
|
|
94
100
|
# Twine автоматически использует переменные окружения:
|
|
95
101
|
# TWINE_USERNAME (по умолчанию "__token__")
|
|
96
102
|
# TWINE_PASSWORD (PYPI_API_TOKEN)
|
|
97
103
|
env = os.environ.copy()
|
|
98
104
|
if pypi_token:
|
|
99
|
-
env[
|
|
100
|
-
env[
|
|
101
|
-
|
|
105
|
+
env["TWINE_USERNAME"] = "__token__"
|
|
106
|
+
env["TWINE_PASSWORD"] = pypi_token
|
|
107
|
+
|
|
102
108
|
# Используем twine через uv run
|
|
103
109
|
result = subprocess.run(
|
|
104
|
-
["uv", "run", "twine", "upload", "dist/*"],
|
|
105
|
-
env=env,
|
|
106
|
-
check=True
|
|
110
|
+
["uv", "run", "twine", "upload", "dist/*"], env=env, check=True
|
|
107
111
|
)
|
|
108
|
-
|
|
112
|
+
|
|
109
113
|
print("✅ Пакет загружен в PyPI")
|
|
110
114
|
return result.returncode == 0
|
|
111
115
|
|
|
116
|
+
|
|
112
117
|
def main():
|
|
113
118
|
"""Основная функция"""
|
|
114
119
|
try:
|
|
115
120
|
print("🚀 Начинаем публикацию в PyPI\n")
|
|
116
|
-
|
|
121
|
+
|
|
117
122
|
# 1. Обновляем версию
|
|
118
123
|
new_version = update_version_in_toml()
|
|
119
|
-
|
|
124
|
+
|
|
120
125
|
# 2. Очищаем dist/
|
|
121
126
|
clean_dist()
|
|
122
|
-
|
|
127
|
+
|
|
123
128
|
# 3. Собираем пакет
|
|
124
129
|
build_package()
|
|
125
|
-
|
|
130
|
+
|
|
126
131
|
# 4. Загружаем в PyPI
|
|
127
132
|
upload_to_pypi()
|
|
128
|
-
|
|
133
|
+
|
|
129
134
|
print(f"\n🎉 Успешно! Версия {new_version} опубликована в PyPI")
|
|
130
|
-
print(
|
|
131
|
-
print(
|
|
135
|
+
print("\n💡 Не забудьте закоммитить изменения:")
|
|
136
|
+
print(" git add pyproject.toml")
|
|
132
137
|
print(f" git commit -m 'Bump version to {new_version}'")
|
|
133
138
|
print(f" git tag v{new_version}")
|
|
134
|
-
print(
|
|
135
|
-
|
|
139
|
+
print(" git push && git push --tags")
|
|
140
|
+
|
|
136
141
|
except subprocess.CalledProcessError as e:
|
|
137
142
|
print(f"\n❌ Ошибка выполнения команды: {e}")
|
|
138
143
|
return 1
|
|
139
144
|
except Exception as e:
|
|
140
145
|
print(f"\n❌ Ошибка: {e}")
|
|
141
146
|
return 1
|
|
142
|
-
|
|
147
|
+
|
|
143
148
|
return 0
|
|
144
149
|
|
|
150
|
+
|
|
145
151
|
if __name__ == "__main__":
|
|
146
152
|
exit(main())
|
|
147
|
-
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "smart-bot-factory"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.8"
|
|
4
4
|
description = "Библиотека для создания умных чат-ботов"
|
|
5
5
|
authors = [
|
|
6
6
|
{name = "Kopatych", email = "eserov73@gmail.com"}
|
|
@@ -33,6 +33,8 @@ dependencies = [
|
|
|
33
33
|
# CLI интерфейс
|
|
34
34
|
"click>=8.0.0",
|
|
35
35
|
"project-root-finder>=1.9",
|
|
36
|
+
"aiogram-media-group>=0.5.1",
|
|
37
|
+
"python-dateutil>=2.9.0.post0",
|
|
36
38
|
]
|
|
37
39
|
requires-python = ">=3.9"
|
|
38
40
|
readme = "README.md"
|
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
Admin модули smart_bot_factory
|
|
3
3
|
"""
|
|
4
4
|
|
|
5
|
+
from .admin_events import setup_admin_events_handlers
|
|
5
6
|
from .admin_logic import setup_admin_handlers
|
|
6
7
|
from .admin_manager import AdminManager
|
|
7
8
|
from .admin_tester import test_admin_system
|
|
8
9
|
from .timeout_checker import check_timeouts, setup_bot_environment
|
|
9
|
-
from .admin_events import setup_admin_events_handlers
|
|
10
10
|
|
|
11
11
|
__all__ = [
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
"setup_admin_handlers",
|
|
13
|
+
"setup_admin_events_handlers",
|
|
14
|
+
"AdminManager",
|
|
15
|
+
"test_admin_system",
|
|
16
|
+
"check_timeouts",
|
|
17
|
+
"setup_bot_environment",
|
|
18
18
|
]
|