smart-bot-factory 0.2.6__tar.gz → 0.2.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.

Files changed (104) hide show
  1. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/PKG-INFO +1 -1
  2. smart_bot_factory-0.2.8/publish.py +122 -0
  3. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/pyproject.toml +54 -49
  4. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/handlers/handlers.py +5 -2
  5. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/uv.lock +426 -1
  6. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/.claude/settings.local.json +0 -0
  7. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/.env.example +0 -0
  8. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.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
  9. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.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
  10. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/.github/workflows/ci.yml +0 -0
  11. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/.github/workflows/publish-private.yml +0 -0
  12. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/.github/workflows/publish.yml +0 -0
  13. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/.gitignore +0 -0
  14. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/.python-version +0 -0
  15. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/CLIENTS_USAGE.md +0 -0
  16. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/Dockerfile +0 -0
  17. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/LICENSE +0 -0
  18. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/README.md +0 -0
  19. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/best-valera.py +0 -0
  20. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/bots/best-valera/prompts/1sales_context.txt +0 -0
  21. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/bots/best-valera/prompts/2product_info.txt +0 -0
  22. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/bots/best-valera/prompts/3objection_handling.txt +0 -0
  23. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/bots/best-valera/prompts/final_instructions.txt +0 -0
  24. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/bots/best-valera/prompts/help_message.txt +0 -0
  25. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/bots/best-valera/prompts/welcome_message.txt +0 -0
  26. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/bots/best-valera/tests/quick_scenarios.yaml +0 -0
  27. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/bots/best-valera/tests/realistic_scenarios.yaml +0 -0
  28. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/bots/best-valera/tests/scenario_examples.yaml +0 -0
  29. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/bots/best-valera/welcome_files/welcome_file_msg.txt +0 -0
  30. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/bots/best-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
  31. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/bots/valera/prompts/2product_info.txt +0 -0
  32. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/bots/valera/prompts/3objection_handling.txt +0 -0
  33. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/bots/valera/prompts/final_instructions.txt +0 -0
  34. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/bots/valera/prompts/help_message.txt +0 -0
  35. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/bots/valera/prompts/welcome_message.txt +0 -0
  36. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/bots/valera/tests/quick_scenarios.yaml +0 -0
  37. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/bots/valera/tests/realistic_scenarios.yaml +0 -0
  38. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/bots/valera/tests/scenario_examples.yaml +0 -0
  39. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/bots/valera/welcome_files/welcome_file_msg.txt +0 -0
  40. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.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
  41. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/configs/valera/cats//320/224/320/276/320/263/320/276/320/262/320/276/321/200.pdf" +0 -0
  42. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/configs/valera/cats//320/272/320/276/320/275/320/270.jpg" +0 -0
  43. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/configs/valera/cats//320/272/320/276/321/202.jpg" +0 -0
  44. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/configs/valera/cats//320/273/320/265/321/201.jpg" +0 -0
  45. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/configs/valera/tests/fixes_elina.yaml +0 -0
  46. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/configs/valera/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
  47. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/create_tag.sh +0 -0
  48. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/docker-compose.yml +0 -0
  49. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/env.example +0 -0
  50. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/requirements.txt +0 -0
  51. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/save_backup.sh +0 -0
  52. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/save_fixes.sh +0 -0
  53. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/__init__.py +0 -0
  54. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/admin/__init__.py +0 -0
  55. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/admin/admin_logic.py +0 -0
  56. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/admin/admin_manager.py +0 -0
  57. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/admin/admin_migration.sql +0 -0
  58. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/admin/admin_tester.py +0 -0
  59. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/admin/timeout_checker.py +0 -0
  60. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/analytics/analytics_manager.py +0 -0
  61. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/cli.py +0 -0
  62. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/config.py +0 -0
  63. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/configs/growthmed-october-24/prompts/1sales_context.txt +0 -0
  64. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/configs/growthmed-october-24/prompts/2product_info.txt +0 -0
  65. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/configs/growthmed-october-24/prompts/3objection_handling.txt +0 -0
  66. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/configs/growthmed-october-24/prompts/final_instructions.txt +0 -0
  67. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/configs/growthmed-october-24/prompts/help_message.txt +0 -0
  68. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/configs/growthmed-october-24/prompts/welcome_message.txt +0 -0
  69. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/configs/growthmed-october-24/reports/test_20250924_064229.txt +0 -0
  70. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/configs/growthmed-october-24/reports/test_20250924_064335.txt +0 -0
  71. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/configs/growthmed-october-24/reports/test_20250924_064638.txt +0 -0
  72. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/configs/growthmed-october-24/tests/quick_scenarios.yaml +0 -0
  73. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/configs/growthmed-october-24/tests/realistic_scenarios.yaml +0 -0
  74. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/configs/growthmed-october-24/tests/scenario_examples.yaml +0 -0
  75. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/configs/growthmed-october-24/welcome_file/welcome_file_msg.txt +0 -0
  76. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.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
  77. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/core/bot_utils.py +0 -0
  78. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/core/conversation_manager.py +0 -0
  79. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/core/decorators.py +0 -0
  80. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/core/message_sender.py +0 -0
  81. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/core/router.py +0 -0
  82. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/core/router_manager.py +0 -0
  83. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/core/states.py +0 -0
  84. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/core/telegram_router.py +0 -0
  85. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/creation/__init__.py +0 -0
  86. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/creation/bot_builder.py +0 -0
  87. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/creation/bot_testing.py +0 -0
  88. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/event/__init__.py +0 -0
  89. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/integrations/openai_client.py +0 -0
  90. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/integrations/supabase_client.py +0 -0
  91. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/message/__init__.py +0 -0
  92. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/router/__init__.py +0 -0
  93. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/setup_checker.py +0 -0
  94. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/supabase/__init__.py +0 -0
  95. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/supabase/client.py +0 -0
  96. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/table/database_structure.sql +0 -0
  97. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/table/schema.sql +0 -0
  98. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/utils/__init__.py +0 -0
  99. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/utils/debug_routing.py +0 -0
  100. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/utils/prompt_loader.py +0 -0
  101. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/utils/user_prompt_loader.py +0 -0
  102. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/smart_bot_factory/utm_link_generator.py +0 -0
  103. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/system_prompt_example.txt +0 -0
  104. {smart_bot_factory-0.2.6 → smart_bot_factory-0.2.8}/valera.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: smart-bot-factory
3
- Version: 0.2.6
3
+ Version: 0.2.8
4
4
  Summary: Библиотека для создания умных чат-ботов
5
5
  Author-email: Kopatych <kopatych@example.com>
6
6
  License: MIT
@@ -0,0 +1,122 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Скрипт автоматической публикации библиотеки в PyPI
4
+ - Увеличивает версию на 0.0.1
5
+ - Очищает dist/
6
+ - Собирает пакет через uv build
7
+ - Публикует через twine
8
+ """
9
+
10
+ import re
11
+ import shutil
12
+ import subprocess
13
+ from pathlib import Path
14
+
15
+ def increment_version(version: str) -> str:
16
+ """Увеличивает версию на 0.0.1"""
17
+ parts = version.split('.')
18
+ if len(parts) != 3:
19
+ raise ValueError(f"Неверный формат версии: {version}")
20
+
21
+ major, minor, patch = map(int, parts)
22
+ patch += 1
23
+
24
+ return f"{major}.{minor}.{patch}"
25
+
26
+ def update_version_in_toml():
27
+ """Обновляет версию в pyproject.toml"""
28
+ toml_path = Path("pyproject.toml")
29
+
30
+ if not toml_path.exists():
31
+ raise FileNotFoundError("pyproject.toml не найден")
32
+
33
+ content = toml_path.read_text(encoding='utf-8')
34
+
35
+ # Находим текущую версию
36
+ version_match = re.search(r'^version\s*=\s*"([^"]+)"', content, re.MULTILINE)
37
+ if not version_match:
38
+ raise ValueError("Версия не найдена в pyproject.toml")
39
+
40
+ old_version = version_match.group(1)
41
+ new_version = increment_version(old_version)
42
+
43
+ # Обновляем версию
44
+ new_content = re.sub(
45
+ r'^version\s*=\s*"[^"]+"',
46
+ f'version = "{new_version}"',
47
+ content,
48
+ flags=re.MULTILINE
49
+ )
50
+
51
+ toml_path.write_text(new_content, encoding='utf-8')
52
+
53
+ print(f"✅ Версия обновлена: {old_version} → {new_version}")
54
+ return new_version
55
+
56
+ def clean_dist():
57
+ """Очищает папку dist/"""
58
+ dist_path = Path("dist")
59
+
60
+ if dist_path.exists():
61
+ shutil.rmtree(dist_path)
62
+ print("✅ Папка dist/ очищена")
63
+
64
+ dist_path.mkdir(exist_ok=True)
65
+ print("✅ Папка dist/ создана")
66
+
67
+ def build_package():
68
+ """Собирает пакет через uv build"""
69
+ print("\n🔨 Сборка пакета...")
70
+ result = subprocess.run(["uv", "build"], check=True)
71
+ print("✅ Пакет собран")
72
+ return result.returncode == 0
73
+
74
+ def upload_to_pypi():
75
+ """Загружает пакет в PyPI через twine"""
76
+ print("\n📤 Загрузка в PyPI...")
77
+
78
+ # Используем twine через uv run
79
+ result = subprocess.run(
80
+ ["uv", "run", "twine", "upload", "dist/*"],
81
+ check=True
82
+ )
83
+
84
+ print("✅ Пакет загружен в PyPI")
85
+ return result.returncode == 0
86
+
87
+ def main():
88
+ """Основная функция"""
89
+ try:
90
+ print("🚀 Начинаем публикацию в PyPI\n")
91
+
92
+ # 1. Обновляем версию
93
+ new_version = update_version_in_toml()
94
+
95
+ # 2. Очищаем dist/
96
+ clean_dist()
97
+
98
+ # 3. Собираем пакет
99
+ build_package()
100
+
101
+ # 4. Загружаем в PyPI
102
+ upload_to_pypi()
103
+
104
+ print(f"\n🎉 Успешно! Версия {new_version} опубликована в PyPI")
105
+ print(f"\n💡 Не забудьте закоммитить изменения:")
106
+ print(f" git add pyproject.toml")
107
+ print(f" git commit -m 'Bump version to {new_version}'")
108
+ print(f" git tag v{new_version}")
109
+ print(f" git push && git push --tags")
110
+
111
+ except subprocess.CalledProcessError as e:
112
+ print(f"\n❌ Ошибка выполнения команды: {e}")
113
+ return 1
114
+ except Exception as e:
115
+ print(f"\n❌ Ошибка: {e}")
116
+ return 1
117
+
118
+ return 0
119
+
120
+ if __name__ == "__main__":
121
+ exit(main())
122
+
@@ -1,49 +1,54 @@
1
- [project]
2
- name = "smart-bot-factory"
3
- version = "0.2.6"
4
- description = "Библиотека для создания умных чат-ботов"
5
- authors = [
6
- {name = "Kopatych", email = "kopatych@example.com"}
7
- ]
8
- keywords = ["chatbot", "telegram", "openai", "supabase", "cli"]
9
- classifiers = [
10
- "Development Status :: 4 - Beta",
11
- "Environment :: Console",
12
- "Framework :: AsyncIO",
13
- "Intended Audience :: Developers",
14
- "License :: OSI Approved :: MIT License",
15
- "Operating System :: OS Independent",
16
- "Programming Language :: Python :: 3",
17
- "Programming Language :: Python :: 3.9",
18
- "Programming Language :: Python :: 3.10",
19
- "Programming Language :: Python :: 3.11",
20
- "Programming Language :: Python :: 3.12",
21
- "Topic :: Communications :: Chat",
22
- "Topic :: Software Development :: Libraries :: Python Modules"
23
- ]
24
- dependencies = [
25
- # Основные зависимости из ядра
26
- "aiogram>=3.4.1",
27
- "supabase>=2.3.4",
28
- "openai>=1.12.0",
29
- "python-dotenv>=1.0.1",
30
- "aiofiles>=23.0.0",
31
- "pytz>=2023.3",
32
- "pyyaml>=6.0.2",
33
- # CLI интерфейс
34
- "click>=8.0.0",
35
- "project-root-finder>=1.9",
36
- ]
37
- requires-python = ">=3.9"
38
- readme = "README.md"
39
- license = {text = "MIT"}
40
-
41
- [project.scripts]
42
- sbf = "smart_bot_factory.cli:cli"
43
-
44
- [build-system]
45
- requires = ["hatchling"]
46
- build-backend = "hatchling.build"
47
-
48
- [tool.hatch.build.targets.wheel]
49
- packages = ["smart_bot_factory"]
1
+ [project]
2
+ name = "smart-bot-factory"
3
+ version = "0.2.8"
4
+ description = "Библиотека для создания умных чат-ботов"
5
+ authors = [
6
+ {name = "Kopatych", email = "kopatych@example.com"}
7
+ ]
8
+ keywords = ["chatbot", "telegram", "openai", "supabase", "cli"]
9
+ classifiers = [
10
+ "Development Status :: 4 - Beta",
11
+ "Environment :: Console",
12
+ "Framework :: AsyncIO",
13
+ "Intended Audience :: Developers",
14
+ "License :: OSI Approved :: MIT License",
15
+ "Operating System :: OS Independent",
16
+ "Programming Language :: Python :: 3",
17
+ "Programming Language :: Python :: 3.9",
18
+ "Programming Language :: Python :: 3.10",
19
+ "Programming Language :: Python :: 3.11",
20
+ "Programming Language :: Python :: 3.12",
21
+ "Topic :: Communications :: Chat",
22
+ "Topic :: Software Development :: Libraries :: Python Modules"
23
+ ]
24
+ dependencies = [
25
+ # Основные зависимости из ядра
26
+ "aiogram>=3.4.1",
27
+ "supabase>=2.3.4",
28
+ "openai>=1.12.0",
29
+ "python-dotenv>=1.0.1",
30
+ "aiofiles>=23.0.0",
31
+ "pytz>=2023.3",
32
+ "pyyaml>=6.0.2",
33
+ # CLI интерфейс
34
+ "click>=8.0.0",
35
+ "project-root-finder>=1.9",
36
+ ]
37
+ requires-python = ">=3.9"
38
+ readme = "README.md"
39
+ license = {text = "MIT"}
40
+
41
+ [project.scripts]
42
+ sbf = "smart_bot_factory.cli:cli"
43
+
44
+ [build-system]
45
+ requires = ["hatchling"]
46
+ build-backend = "hatchling.build"
47
+
48
+ [tool.hatch.build.targets.wheel]
49
+ packages = ["smart_bot_factory"]
50
+
51
+ [dependency-groups]
52
+ dev = [
53
+ "twine>=6.2.0",
54
+ ]
@@ -501,7 +501,10 @@ async def process_user_message(message: Message, state: FSMContext, session_id:
501
501
  validators = message_hooks.get('validators', [])
502
502
  for validator in validators:
503
503
  try:
504
- should_continue = await validator(message, supabase_client)
504
+ user_message = message.text
505
+ message_obj = message
506
+
507
+ should_continue = await validator(user_message, message_obj)
505
508
  if not should_continue:
506
509
  logger.info(f"⛔ Валидатор '{validator.__name__}' прервал обработку")
507
510
  return # Прерываем обработку
@@ -749,7 +752,7 @@ async def process_user_message(message: Message, state: FSMContext, session_id:
749
752
  send_filters = message_hooks.get('send_filters', [])
750
753
  for filter_func in send_filters:
751
754
  try:
752
- should_send = await filter_func(message.from_user.id, final_response)
755
+ should_send = await filter_func(message.from_user.id)
753
756
  if not should_send:
754
757
  logger.info(f"⛔ Фильтр '{filter_func.__name__}' заблокировал отправку")
755
758
  return # Не отправляем