smart-bot-factory 0.2.8__tar.gz → 0.2.10__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 (105) hide show
  1. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/PKG-INFO +1 -1
  2. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/pyproject.toml +1 -1
  3. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/core/bot_utils.py +11 -0
  4. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/creation/bot_builder.py +43 -0
  5. smart_bot_factory-0.2.10/smart_bot_factory/message/__init__.py +60 -0
  6. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/uv.lock +1 -1
  7. smart_bot_factory-0.2.8/smart_bot_factory/message/__init__.py +0 -18
  8. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/.claude/settings.local.json +0 -0
  9. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/.env.example +0 -0
  10. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/.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
  11. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/.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
  12. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/.github/workflows/ci.yml +0 -0
  13. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/.github/workflows/publish-private.yml +0 -0
  14. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/.github/workflows/publish.yml +0 -0
  15. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/.gitignore +0 -0
  16. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/.python-version +0 -0
  17. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/CLIENTS_USAGE.md +0 -0
  18. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/Dockerfile +0 -0
  19. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/LICENSE +0 -0
  20. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/README.md +0 -0
  21. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/best-valera.py +0 -0
  22. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/bots/best-valera/prompts/1sales_context.txt +0 -0
  23. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/bots/best-valera/prompts/2product_info.txt +0 -0
  24. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/bots/best-valera/prompts/3objection_handling.txt +0 -0
  25. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/bots/best-valera/prompts/final_instructions.txt +0 -0
  26. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/bots/best-valera/prompts/help_message.txt +0 -0
  27. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/bots/best-valera/prompts/welcome_message.txt +0 -0
  28. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/bots/best-valera/tests/quick_scenarios.yaml +0 -0
  29. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/bots/best-valera/tests/realistic_scenarios.yaml +0 -0
  30. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/bots/best-valera/tests/scenario_examples.yaml +0 -0
  31. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/bots/best-valera/welcome_files/welcome_file_msg.txt +0 -0
  32. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/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
  33. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/bots/valera/prompts/2product_info.txt +0 -0
  34. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/bots/valera/prompts/3objection_handling.txt +0 -0
  35. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/bots/valera/prompts/final_instructions.txt +0 -0
  36. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/bots/valera/prompts/help_message.txt +0 -0
  37. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/bots/valera/prompts/welcome_message.txt +0 -0
  38. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/bots/valera/tests/quick_scenarios.yaml +0 -0
  39. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/bots/valera/tests/realistic_scenarios.yaml +0 -0
  40. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/bots/valera/tests/scenario_examples.yaml +0 -0
  41. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/bots/valera/welcome_files/welcome_file_msg.txt +0 -0
  42. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/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
  43. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/configs/valera/cats//320/224/320/276/320/263/320/276/320/262/320/276/321/200.pdf" +0 -0
  44. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/configs/valera/cats//320/272/320/276/320/275/320/270.jpg" +0 -0
  45. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/configs/valera/cats//320/272/320/276/321/202.jpg" +0 -0
  46. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/configs/valera/cats//320/273/320/265/321/201.jpg" +0 -0
  47. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/configs/valera/tests/fixes_elina.yaml +0 -0
  48. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/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
  49. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/create_tag.sh +0 -0
  50. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/docker-compose.yml +0 -0
  51. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/env.example +0 -0
  52. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/publish.py +0 -0
  53. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/requirements.txt +0 -0
  54. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/save_backup.sh +0 -0
  55. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/save_fixes.sh +0 -0
  56. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/__init__.py +0 -0
  57. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/admin/__init__.py +0 -0
  58. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/admin/admin_logic.py +0 -0
  59. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/admin/admin_manager.py +0 -0
  60. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/admin/admin_migration.sql +0 -0
  61. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/admin/admin_tester.py +0 -0
  62. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/admin/timeout_checker.py +0 -0
  63. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/analytics/analytics_manager.py +0 -0
  64. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/cli.py +0 -0
  65. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/config.py +0 -0
  66. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/configs/growthmed-october-24/prompts/1sales_context.txt +0 -0
  67. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/configs/growthmed-october-24/prompts/2product_info.txt +0 -0
  68. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/configs/growthmed-october-24/prompts/3objection_handling.txt +0 -0
  69. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/configs/growthmed-october-24/prompts/final_instructions.txt +0 -0
  70. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/configs/growthmed-october-24/prompts/help_message.txt +0 -0
  71. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/configs/growthmed-october-24/prompts/welcome_message.txt +0 -0
  72. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/configs/growthmed-october-24/reports/test_20250924_064229.txt +0 -0
  73. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/configs/growthmed-october-24/reports/test_20250924_064335.txt +0 -0
  74. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/configs/growthmed-october-24/reports/test_20250924_064638.txt +0 -0
  75. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/configs/growthmed-october-24/tests/quick_scenarios.yaml +0 -0
  76. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/configs/growthmed-october-24/tests/realistic_scenarios.yaml +0 -0
  77. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/configs/growthmed-october-24/tests/scenario_examples.yaml +0 -0
  78. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/configs/growthmed-october-24/welcome_file/welcome_file_msg.txt +0 -0
  79. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/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
  80. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/core/conversation_manager.py +0 -0
  81. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/core/decorators.py +0 -0
  82. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/core/message_sender.py +0 -0
  83. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/core/router.py +0 -0
  84. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/core/router_manager.py +0 -0
  85. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/core/states.py +0 -0
  86. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/core/telegram_router.py +0 -0
  87. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/creation/__init__.py +0 -0
  88. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/creation/bot_testing.py +0 -0
  89. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/event/__init__.py +0 -0
  90. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/handlers/handlers.py +0 -0
  91. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/integrations/openai_client.py +0 -0
  92. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/integrations/supabase_client.py +0 -0
  93. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/router/__init__.py +0 -0
  94. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/setup_checker.py +0 -0
  95. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/supabase/__init__.py +0 -0
  96. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/supabase/client.py +0 -0
  97. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/table/database_structure.sql +0 -0
  98. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/table/schema.sql +0 -0
  99. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/utils/__init__.py +0 -0
  100. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/utils/debug_routing.py +0 -0
  101. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/utils/prompt_loader.py +0 -0
  102. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/utils/user_prompt_loader.py +0 -0
  103. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/smart_bot_factory/utm_link_generator.py +0 -0
  104. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/system_prompt_example.txt +0 -0
  105. {smart_bot_factory-0.2.8 → smart_bot_factory-0.2.10}/valera.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: smart-bot-factory
3
- Version: 0.2.8
3
+ Version: 0.2.10
4
4
  Summary: Библиотека для создания умных чат-ботов
5
5
  Author-email: Kopatych <kopatych@example.com>
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "smart-bot-factory"
3
- version = "0.2.8"
3
+ version = "0.2.10"
4
4
  description = "Библиотека для создания умных чат-ботов"
5
5
  authors = [
6
6
  {name = "Kopatych", email = "kopatych@example.com"}
@@ -177,6 +177,17 @@ def parse_ai_response_method2(ai_response: str) -> tuple[str, dict]:
177
177
 
178
178
  async def process_events(session_id: str, events: list, user_id: int):
179
179
  """Обрабатывает события из ответа ИИ"""
180
+
181
+ # Проверяем кастомный процессор
182
+ custom_processor = get_global_var('custom_event_processor')
183
+
184
+ if custom_processor:
185
+ # Используем кастомную функцию обработки событий
186
+ logger.info(f"🔄 Используется кастомная обработка событий: {custom_processor.__name__}")
187
+ await custom_processor(session_id, events, user_id)
188
+ return
189
+
190
+ # Стандартная обработка
180
191
  supabase_client = get_global_var('supabase_client')
181
192
 
182
193
  for event in events:
@@ -58,6 +58,9 @@ class BotBuilder:
58
58
  # Кастомный PromptLoader
59
59
  self._custom_prompt_loader = None
60
60
 
61
+ # Кастомный процессор событий
62
+ self._custom_event_processor = None
63
+
61
64
  # Флаги инициализации
62
65
  self._initialized = False
63
66
 
@@ -402,6 +405,44 @@ class BotBuilder:
402
405
  self._custom_prompt_loader = prompt_loader
403
406
  logger.info(f"✅ Установлен кастомный PromptLoader: {type(prompt_loader).__name__}")
404
407
 
408
+ def set_event_processor(self, custom_processor):
409
+ """
410
+ Устанавливает кастомную функцию для обработки событий
411
+
412
+ Полностью заменяет стандартную process_events из bot_utils
413
+
414
+ Args:
415
+ custom_processor: async def(session_id: str, events: list, user_id: int)
416
+
417
+ Example:
418
+ from smart_bot_factory.message import get_bot
419
+ from smart_bot_factory.core.decorators import execute_event_handler
420
+
421
+ async def my_process_events(session_id, events, user_id):
422
+ '''Моя кастомная обработка событий'''
423
+ bot = get_bot()
424
+
425
+ for event in events:
426
+ event_type = event.get('тип')
427
+ event_info = event.get('инфо')
428
+
429
+ if event_type == 'запись':
430
+ # Кастомная логика для бронирования
431
+ telegram_user = await bot.get_chat(user_id)
432
+ name = telegram_user.first_name or 'Клиент'
433
+ # ... ваша обработка
434
+ else:
435
+ # Для остальных - стандартная обработка
436
+ await execute_event_handler(event_type, user_id, event_info)
437
+
438
+ bot_builder.set_event_processor(my_process_events)
439
+ """
440
+ if not callable(custom_processor):
441
+ raise TypeError(f"Процессор должен быть callable, получен {type(custom_processor)}")
442
+
443
+ self._custom_event_processor = custom_processor
444
+ logger.info(f"✅ Установлена кастомная функция обработки событий: {custom_processor.__name__}")
445
+
405
446
  # ========== ХУКИ ДЛЯ КАСТОМИЗАЦИИ ОБРАБОТКИ СООБЩЕНИЙ ==========
406
447
 
407
448
  def validate_message(self, handler):
@@ -580,6 +621,7 @@ class BotBuilder:
580
621
  handlers_module.conversation_manager = self.conversation_manager
581
622
  handlers_module.start_handlers = self._start_handlers # Передаем обработчики on_start
582
623
  handlers_module.message_hooks = self.get_message_hooks() # Передаем хуки для обработки сообщений
624
+ handlers_module.custom_event_processor = self._custom_event_processor # Передаем кастомный процессор событий
583
625
  logger.info("✅ Глобальные переменные установлены в handlers")
584
626
  except Exception as e:
585
627
  logger.warning(f"⚠️ Не удалось установить глобальные переменные в handlers: {e}")
@@ -611,6 +653,7 @@ class BotBuilder:
611
653
  bot_utils_module.admin_manager = self.admin_manager
612
654
  bot_utils_module.analytics_manager = self.analytics_manager
613
655
  bot_utils_module.conversation_manager = self.conversation_manager
656
+ bot_utils_module.custom_event_processor = self._custom_event_processor # Передаем кастомный процессор событий
614
657
  logger.info("✅ Глобальные переменные установлены в bot_utils")
615
658
  except Exception as e:
616
659
  logger.warning(f"⚠️ Не удалось установить глобальные переменные в bot_utils: {e}")
@@ -0,0 +1,60 @@
1
+ """
2
+ Message модули smart_bot_factory
3
+ """
4
+
5
+
6
+ from ..core.message_sender import (
7
+ send_message_by_human,
8
+ send_message_by_ai,
9
+ send_message_to_users_by_stage,
10
+ send_message,
11
+ )
12
+
13
+
14
+ def get_bot():
15
+ """
16
+ Получает aiogram Bot из глобального контекста
17
+
18
+ Доступен после вызова bot_builder.start()
19
+
20
+ Returns:
21
+ Bot: aiogram Bot объект
22
+
23
+ Raises:
24
+ RuntimeError: Если bot еще не инициализирован
25
+
26
+ Example:
27
+ from smart_bot_factory.message import get_bot
28
+
29
+ @event_router.event_handler("booking")
30
+ async def handle_booking(user_id: int, event_data: str):
31
+ bot = get_bot()
32
+
33
+ # Получаем информацию о пользователе из Telegram
34
+ telegram_user = await bot.get_chat(user_id)
35
+ name = telegram_user.first_name or 'Клиент'
36
+
37
+ # Используем любые методы aiogram Bot
38
+ await bot.send_message(user_id, f"Привет, {name}!")
39
+ await bot.send_photo(user_id, photo=...)
40
+ """
41
+ from ..handlers.handlers import get_global_var
42
+
43
+ bot = get_global_var('bot')
44
+ if not bot:
45
+ raise RuntimeError(
46
+ "Bot еще не инициализирован. "
47
+ "Убедитесь что bot_builder.start() уже вызван. "
48
+ "Функция get_bot() доступна только внутри обработчиков событий, "
49
+ "которые выполняются во время работы бота."
50
+ )
51
+ return bot
52
+
53
+
54
+ __all__ = [
55
+ 'send_message_by_human',
56
+ 'send_message_by_ai',
57
+ 'send_message_to_users_by_stage',
58
+ 'send_message', # Чистая отправка с файлами и кнопками
59
+ 'get_bot', # Доступ к aiogram Bot
60
+ ]
@@ -1637,7 +1637,7 @@ wheels = [
1637
1637
 
1638
1638
  [[package]]
1639
1639
  name = "smart-bot-factory"
1640
- version = "0.2.7"
1640
+ version = "0.2.9"
1641
1641
  source = { editable = "." }
1642
1642
  dependencies = [
1643
1643
  { name = "aiofiles" },
@@ -1,18 +0,0 @@
1
- """
2
- Message модули smart_bot_factory
3
- """
4
-
5
-
6
- from ..core.message_sender import (
7
- send_message_by_human,
8
- send_message_by_ai,
9
- send_message_to_users_by_stage,
10
- send_message,
11
- )
12
-
13
- __all__ = [
14
- 'send_message_by_human',
15
- 'send_message_by_ai',
16
- 'send_message_to_users_by_stage',
17
- 'send_message', # Чистая отправка с файлами и кнопками
18
- ]