smart-bot-factory 0.2.10__tar.gz → 0.2.11__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.10 → smart_bot_factory-0.2.11}/PKG-INFO +1 -1
  2. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/publish.py +26 -1
  3. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/pyproject.toml +1 -1
  4. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/creation/bot_builder.py +11 -5
  5. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/handlers/handlers.py +3 -2
  6. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/uv.lock +1 -1
  7. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/.claude/settings.local.json +0 -0
  8. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/.env.example +0 -0
  9. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/.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
  10. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/.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
  11. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/.github/workflows/ci.yml +0 -0
  12. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/.github/workflows/publish-private.yml +0 -0
  13. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/.github/workflows/publish.yml +0 -0
  14. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/.gitignore +0 -0
  15. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/.python-version +0 -0
  16. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/CLIENTS_USAGE.md +0 -0
  17. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/Dockerfile +0 -0
  18. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/LICENSE +0 -0
  19. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/README.md +0 -0
  20. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/best-valera.py +0 -0
  21. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/bots/best-valera/prompts/1sales_context.txt +0 -0
  22. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/bots/best-valera/prompts/2product_info.txt +0 -0
  23. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/bots/best-valera/prompts/3objection_handling.txt +0 -0
  24. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/bots/best-valera/prompts/final_instructions.txt +0 -0
  25. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/bots/best-valera/prompts/help_message.txt +0 -0
  26. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/bots/best-valera/prompts/welcome_message.txt +0 -0
  27. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/bots/best-valera/tests/quick_scenarios.yaml +0 -0
  28. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/bots/best-valera/tests/realistic_scenarios.yaml +0 -0
  29. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/bots/best-valera/tests/scenario_examples.yaml +0 -0
  30. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/bots/best-valera/welcome_files/welcome_file_msg.txt +0 -0
  31. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/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
  32. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/bots/valera/prompts/2product_info.txt +0 -0
  33. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/bots/valera/prompts/3objection_handling.txt +0 -0
  34. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/bots/valera/prompts/final_instructions.txt +0 -0
  35. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/bots/valera/prompts/help_message.txt +0 -0
  36. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/bots/valera/prompts/welcome_message.txt +0 -0
  37. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/bots/valera/tests/quick_scenarios.yaml +0 -0
  38. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/bots/valera/tests/realistic_scenarios.yaml +0 -0
  39. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/bots/valera/tests/scenario_examples.yaml +0 -0
  40. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/bots/valera/welcome_files/welcome_file_msg.txt +0 -0
  41. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/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
  42. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/configs/valera/cats//320/224/320/276/320/263/320/276/320/262/320/276/321/200.pdf" +0 -0
  43. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/configs/valera/cats//320/272/320/276/320/275/320/270.jpg" +0 -0
  44. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/configs/valera/cats//320/272/320/276/321/202.jpg" +0 -0
  45. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/configs/valera/cats//320/273/320/265/321/201.jpg" +0 -0
  46. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/configs/valera/tests/fixes_elina.yaml +0 -0
  47. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/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
  48. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/create_tag.sh +0 -0
  49. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/docker-compose.yml +0 -0
  50. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/env.example +0 -0
  51. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/requirements.txt +0 -0
  52. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/save_backup.sh +0 -0
  53. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/save_fixes.sh +0 -0
  54. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/__init__.py +0 -0
  55. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/admin/__init__.py +0 -0
  56. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/admin/admin_logic.py +0 -0
  57. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/admin/admin_manager.py +0 -0
  58. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/admin/admin_migration.sql +0 -0
  59. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/admin/admin_tester.py +0 -0
  60. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/admin/timeout_checker.py +0 -0
  61. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/analytics/analytics_manager.py +0 -0
  62. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/cli.py +0 -0
  63. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/config.py +0 -0
  64. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/configs/growthmed-october-24/prompts/1sales_context.txt +0 -0
  65. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/configs/growthmed-october-24/prompts/2product_info.txt +0 -0
  66. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/configs/growthmed-october-24/prompts/3objection_handling.txt +0 -0
  67. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/configs/growthmed-october-24/prompts/final_instructions.txt +0 -0
  68. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/configs/growthmed-october-24/prompts/help_message.txt +0 -0
  69. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/configs/growthmed-october-24/prompts/welcome_message.txt +0 -0
  70. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/configs/growthmed-october-24/reports/test_20250924_064229.txt +0 -0
  71. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/configs/growthmed-october-24/reports/test_20250924_064335.txt +0 -0
  72. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/configs/growthmed-october-24/reports/test_20250924_064638.txt +0 -0
  73. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/configs/growthmed-october-24/tests/quick_scenarios.yaml +0 -0
  74. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/configs/growthmed-october-24/tests/realistic_scenarios.yaml +0 -0
  75. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/configs/growthmed-october-24/tests/scenario_examples.yaml +0 -0
  76. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/configs/growthmed-october-24/welcome_file/welcome_file_msg.txt +0 -0
  77. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/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
  78. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/core/bot_utils.py +0 -0
  79. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/core/conversation_manager.py +0 -0
  80. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/core/decorators.py +0 -0
  81. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/core/message_sender.py +0 -0
  82. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/core/router.py +0 -0
  83. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/core/router_manager.py +0 -0
  84. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/core/states.py +0 -0
  85. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/core/telegram_router.py +0 -0
  86. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/creation/__init__.py +0 -0
  87. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/creation/bot_testing.py +0 -0
  88. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/event/__init__.py +0 -0
  89. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/integrations/openai_client.py +0 -0
  90. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/integrations/supabase_client.py +0 -0
  91. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/message/__init__.py +0 -0
  92. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/router/__init__.py +0 -0
  93. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/setup_checker.py +0 -0
  94. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/supabase/__init__.py +0 -0
  95. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/supabase/client.py +0 -0
  96. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/table/database_structure.sql +0 -0
  97. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/table/schema.sql +0 -0
  98. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/utils/__init__.py +0 -0
  99. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/utils/debug_routing.py +0 -0
  100. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/utils/prompt_loader.py +0 -0
  101. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/utils/user_prompt_loader.py +0 -0
  102. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/smart_bot_factory/utm_link_generator.py +0 -0
  103. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/system_prompt_example.txt +0 -0
  104. {smart_bot_factory-0.2.10 → smart_bot_factory-0.2.11}/valera.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: smart-bot-factory
3
- Version: 0.2.10
3
+ Version: 0.2.11
4
4
  Summary: Библиотека для создания умных чат-ботов
5
5
  Author-email: Kopatych <kopatych@example.com>
6
6
  License: MIT
@@ -4,13 +4,18 @@
4
4
  - Увеличивает версию на 0.0.1
5
5
  - Очищает dist/
6
6
  - Собирает пакет через uv build
7
- - Публикует через twine
7
+ - Публикует через twine (использует API токен из .env)
8
8
  """
9
9
 
10
+ import os
10
11
  import re
11
12
  import shutil
12
13
  import subprocess
13
14
  from pathlib import Path
15
+ from dotenv import load_dotenv
16
+
17
+ # Загружаем переменные из .env
18
+ load_dotenv()
14
19
 
15
20
  def increment_version(version: str) -> str:
16
21
  """Увеличивает версию на 0.0.1"""
@@ -75,9 +80,29 @@ def upload_to_pypi():
75
80
  """Загружает пакет в PyPI через twine"""
76
81
  print("\n📤 Загрузка в PyPI...")
77
82
 
83
+ # Проверяем наличие токена в .env
84
+ pypi_token = os.getenv('PYPI_API_TOKEN')
85
+
86
+ if not pypi_token:
87
+ print("⚠️ PYPI_API_TOKEN не найден в .env")
88
+ print("💡 Добавьте в .env файл:")
89
+ print(" PYPI_API_TOKEN=pypi-...")
90
+ print("\nИли введите вручную при запросе twine")
91
+ else:
92
+ print(f"✅ Используется API токен из .env (длина: {len(pypi_token)} символов)")
93
+
94
+ # Twine автоматически использует переменные окружения:
95
+ # TWINE_USERNAME (по умолчанию "__token__")
96
+ # TWINE_PASSWORD (PYPI_API_TOKEN)
97
+ env = os.environ.copy()
98
+ if pypi_token:
99
+ env['TWINE_USERNAME'] = '__token__'
100
+ env['TWINE_PASSWORD'] = pypi_token
101
+
78
102
  # Используем twine через uv run
79
103
  result = subprocess.run(
80
104
  ["uv", "run", "twine", "upload", "dist/*"],
105
+ env=env,
81
106
  check=True
82
107
  )
83
108
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "smart-bot-factory"
3
- version = "0.2.10"
3
+ version = "0.2.11"
4
4
  description = "Библиотека для создания умных чат-ботов"
5
5
  authors = [
6
6
  {name = "Kopatych", email = "kopatych@example.com"}
@@ -542,17 +542,23 @@ class BotBuilder:
542
542
  """
543
543
  Регистрирует фильтр отправки (может блокировать отправку пользователю)
544
544
 
545
- Если фильтр возвращает False, сообщение НЕ отправляется
545
+ Если фильтр возвращает True, сообщение НЕ отправляется
546
546
 
547
547
  Args:
548
- handler: async def(user_id: int, response_text: str) -> bool
548
+ handler: async def(user_id: int) -> bool
549
549
 
550
550
  Example:
551
551
  @bot_builder.filter_send
552
- async def block_during_process(user_id, response_text):
552
+ async def block_during_process(user_id):
553
553
  if is_processing(user_id):
554
- return False # Не отправляем
555
- return True # Отправляем
554
+ return True # Блокируем отправку
555
+ return False # Разрешаем отправку
556
+
557
+ # Или совместимый с should_block_ai_response
558
+ @bot_builder.filter_send
559
+ async def should_block_ai_response(user_id):
560
+ # Ваша логика проверки
561
+ return user_is_blocked(user_id) # True = блокировать
556
562
  """
557
563
  if not callable(handler):
558
564
  raise TypeError(f"Обработчик должен быть callable, получен {type(handler)}")
@@ -753,8 +753,9 @@ async def process_user_message(message: Message, state: FSMContext, session_id:
753
753
  for filter_func in send_filters:
754
754
  try:
755
755
  should_send = await filter_func(message.from_user.id)
756
- if not should_send:
757
- logger.info(f"⛔ Фильтр '{filter_func.__name__}' заблокировал отправку")
756
+ if should_send:
757
+ # True = блокируем (для совместимости с should_block_ai_response)
758
+ logger.info(f"⛔ Фильтр '{filter_func.__name__}' заблокировал отправку (вернул True)")
758
759
  return # Не отправляем
759
760
  except Exception as e:
760
761
  logger.error(f"❌ Ошибка в фильтре отправки '{filter_func.__name__}': {e}")
@@ -1637,7 +1637,7 @@ wheels = [
1637
1637
 
1638
1638
  [[package]]
1639
1639
  name = "smart-bot-factory"
1640
- version = "0.2.9"
1640
+ version = "0.2.10"
1641
1641
  source = { editable = "." }
1642
1642
  dependencies = [
1643
1643
  { name = "aiofiles" },