arpakitlib 1.8.84__py3-none-any.whl → 1.8.87__py3-none-any.whl

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.
Files changed (64) hide show
  1. arpakitlib/_arpakit_project_template_v_5/arpakitlib_project_template_info.json +1 -1
  2. arpakitlib/_arpakit_project_template_v_5/command/show_arpakitlib_project_template_info.py +9 -0
  3. arpakitlib/_arpakit_project_template_v_5/project/core/settings.py +2 -0
  4. arpakitlib/_arpakit_project_template_v_5/project/sandbox/sandbox_1.py +0 -5
  5. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/blank/admin.py +7 -7
  6. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/blank/client.py +18 -20
  7. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/callback/admin.py +5 -0
  8. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/callback/client.py +1 -5
  9. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/const.py +5 -3
  10. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/event.py +12 -1
  11. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/filter_/user_roles_has_admin.py +2 -2
  12. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/filter_/user_roles_has_client.py +2 -2
  13. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/inline_/admin/hello_world.py +16 -0
  14. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/inline_/client/support.py +15 -0
  15. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/static_/{client → admin}/hello_world.py +3 -3
  16. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/middleware/common.py +2 -2
  17. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/middleware/init_user.py +14 -14
  18. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/arpakitlib_project_template_info.py +3 -0
  19. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/clear_log_file.py +9 -3
  20. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/current_state.py +31 -0
  21. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/drop_sqlalchemy_db.py +5 -2
  22. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/hello_world.py +73 -0
  23. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/init_sqlalchemy_db.py +5 -2
  24. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/kb_with_not_modified.py +10 -3
  25. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/kb_with_old_cd.py +3 -2
  26. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/kb_with_raise_error.py +6 -2
  27. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/kb_with_remove_message.py +7 -4
  28. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/log_file.py +6 -1
  29. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/me.py +7 -2
  30. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/raise_fake_error.py +4 -2
  31. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/reinit_sqlalchemy_db.py +5 -2
  32. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/set_tg_bot_commands.py +5 -2
  33. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/{general → client}/about.py +8 -5
  34. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/{general → client}/author.py +8 -5
  35. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/{general/support.py → client/cancel.py} +9 -6
  36. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/{general → client}/error_handler.py +7 -3
  37. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/healthcheck.py +21 -0
  38. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/{general → client}/raw_callback_query.py +4 -2
  39. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/{general → client}/raw_inline_query.py +2 -0
  40. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/{general → client}/raw_message.py +5 -2
  41. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/{general → client}/remove_message.py +4 -2
  42. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/{general → client}/start.py +8 -5
  43. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/client/support.py +37 -0
  44. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/main_router.py +16 -12
  45. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/state/__init__.py +0 -0
  46. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/state/admin.py +0 -0
  47. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/state/client.py +5 -0
  48. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/state/common.py +0 -0
  49. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/state/util.py +0 -0
  50. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/tg_bot_dispatcher.py +1 -1
  51. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/notify_admins.py +6 -3
  52. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/set_tg_bot_commands.py +14 -15
  53. arpakitlib/_arpakit_project_template_v_5/project/util/etc.py +0 -0
  54. arpakitlib/ar_blank_util.py +59 -2
  55. {arpakitlib-1.8.84.dist-info → arpakitlib-1.8.87.dist-info}/METADATA +1 -2
  56. {arpakitlib-1.8.84.dist-info → arpakitlib-1.8.87.dist-info}/RECORD +61 -51
  57. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/kb/inline_/client/hello_world.py +0 -16
  58. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/general/healthcheck.py +0 -18
  59. arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/general/hello_world.py +0 -47
  60. /arpakitlib/_arpakit_project_template_v_5/project/tg_bot/middleware/{middleware.py → uil.py} +0 -0
  61. /arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/{general → client}/__init__.py +0 -0
  62. {arpakitlib-1.8.84.dist-info → arpakitlib-1.8.87.dist-info}/LICENSE +0 -0
  63. {arpakitlib-1.8.84.dist-info → arpakitlib-1.8.87.dist-info}/WHEEL +0 -0
  64. {arpakitlib-1.8.84.dist-info → arpakitlib-1.8.87.dist-info}/entry_points.txt +0 -0
@@ -1,4 +1,5 @@
1
1
  import aiogram.filters
2
+ from aiogram.fsm.context import FSMContext
2
3
  from aiogram.types import InlineKeyboardButton
3
4
  from aiogram.utils.keyboard import InlineKeyboardBuilder
4
5
 
@@ -24,16 +25,16 @@ class _CD(BaseCD, prefix=AdminTgBotCommands.kb_with_old_cd):
24
25
  @as_tg_command()
25
26
  async def _(
26
27
  m: aiogram.types.Message,
28
+ state: FSMContext,
27
29
  middleware_data_tg_bot: MiddlewareDataTgBot,
28
30
  **kwargs
29
31
  ):
32
+ await state.clear()
30
33
  kb_builder = InlineKeyboardBuilder()
31
-
32
34
  kb_builder.row(InlineKeyboardButton(
33
35
  text="Button with old data",
34
36
  callback_data=_CD().pack()
35
37
  ))
36
-
37
38
  await m.answer(
38
39
  text="Old data",
39
40
  reply_markup=kb_builder.as_markup()
@@ -1,9 +1,10 @@
1
1
  import aiogram.filters
2
+ from aiogram.fsm.context import FSMContext
2
3
  from aiogram.types import InlineKeyboardButton
3
4
  from aiogram.utils.keyboard import InlineKeyboardBuilder
4
5
 
5
6
  from arpakitlib.ar_aiogram_util import as_tg_command
6
- from project.tg_bot.blank.admin import get_cached_admin_tg_bot_blank
7
+ from project.tg_bot.blank.admin import get_cached_eng_admin_tg_bot_blank
7
8
  from project.tg_bot.callback.common import BaseCD
8
9
  from project.tg_bot.const import AdminTgBotCommands
9
10
  from project.tg_bot.filter_.is_private_chat import IsPrivateChatTgBotFilter
@@ -25,16 +26,18 @@ class _CD(BaseCD, prefix=AdminTgBotCommands.kb_with_raise_error):
25
26
  @as_tg_command()
26
27
  async def _(
27
28
  m: aiogram.types.Message,
29
+ state: FSMContext,
28
30
  middleware_data_tg_bot: MiddlewareDataTgBot,
29
31
  **kwargs
30
32
  ):
33
+ await state.clear()
31
34
  kb_builder = InlineKeyboardBuilder()
32
35
  kb_builder.row(InlineKeyboardButton(
33
36
  text="Raise fake error",
34
37
  callback_data=_CD().pack()
35
38
  ))
36
39
  await m.answer(
37
- text=get_cached_admin_tg_bot_blank().good(),
40
+ text=get_cached_eng_admin_tg_bot_blank().good(),
38
41
  reply_markup=kb_builder.as_markup()
39
42
  )
40
43
 
@@ -42,6 +45,7 @@ async def _(
42
45
  @tg_bot_router.callback_query(_CD.filter())
43
46
  async def _(
44
47
  m: aiogram.types.Message,
48
+ state: FSMContext,
45
49
  middleware_data_tg_bot: MiddlewareDataTgBot,
46
50
  **kwargs
47
51
  ):
@@ -1,10 +1,11 @@
1
1
  import aiogram.filters
2
+ from aiogram.fsm.context import FSMContext
2
3
  from aiogram.types import InlineKeyboardButton
3
4
  from aiogram.utils.keyboard import InlineKeyboardBuilder
4
5
 
5
6
  from arpakitlib.ar_aiogram_util import as_tg_command
6
- from project.tg_bot.blank.admin import get_cached_admin_tg_bot_blank
7
- from project.tg_bot.callback.client import RemoveMessageCD
7
+ from project.tg_bot.blank.admin import get_cached_eng_admin_tg_bot_blank
8
+ from project.tg_bot.callback.client import RemoveMessageClientCD
8
9
  from project.tg_bot.const import AdminTgBotCommands
9
10
  from project.tg_bot.filter_.is_private_chat import IsPrivateChatTgBotFilter
10
11
  from project.tg_bot.filter_.user_roles_has_admin import UserRolesHasAdminTgBotFilter
@@ -21,15 +22,17 @@ tg_bot_router = aiogram.Router()
21
22
  @as_tg_command()
22
23
  async def _(
23
24
  m: aiogram.types.Message,
25
+ state: FSMContext,
24
26
  middleware_data_tg_bot: MiddlewareDataTgBot,
25
27
  **kwargs
26
28
  ):
29
+ await state.clear()
27
30
  kb_builder = InlineKeyboardBuilder()
28
31
  kb_builder.row(InlineKeyboardButton(
29
32
  text="Remove",
30
- callback_data=RemoveMessageCD().pack()
33
+ callback_data=RemoveMessageClientCD().pack()
31
34
  ))
32
35
  await m.answer(
33
- text=get_cached_admin_tg_bot_blank().good(),
36
+ text=get_cached_eng_admin_tg_bot_blank().good(),
34
37
  reply_markup=kb_builder.as_markup()
35
38
  )
@@ -3,6 +3,7 @@ import os
3
3
  import aiogram
4
4
  from aiogram import Router, types
5
5
  from aiogram.filters import Command
6
+ from aiogram.fsm.context import FSMContext
6
7
  from aiogram.types import FSInputFile
7
8
 
8
9
  from arpakitlib.ar_aiogram_util import as_tg_command
@@ -10,6 +11,7 @@ from project.core.settings import get_cached_settings
10
11
  from project.tg_bot.const import AdminTgBotCommands
11
12
  from project.tg_bot.filter_.is_private_chat import IsPrivateChatTgBotFilter
12
13
  from project.tg_bot.filter_.user_roles_has_admin import UserRolesHasAdminTgBotFilter
14
+ from project.tg_bot.middleware.common import MiddlewareDataTgBot
13
15
 
14
16
  tg_bot_router = Router()
15
17
 
@@ -22,11 +24,14 @@ tg_bot_router = Router()
22
24
  @as_tg_command(passwd_validator=get_cached_settings().tg_bot_command_passwd)
23
25
  async def _(
24
26
  m: types.Message,
27
+ state: FSMContext,
28
+ middleware_data_tg_bot: MiddlewareDataTgBot,
25
29
  **kwargs
26
30
  ):
31
+ await state.clear()
27
32
  with open(get_cached_settings().log_filepath, mode="r") as f:
28
33
  if not f.read():
29
- await m.answer("log файл пустой")
34
+ await m.answer("Log file is empty")
30
35
  return
31
36
 
32
37
  await m.answer_document(
@@ -1,7 +1,8 @@
1
1
  import aiogram.filters
2
+ from aiogram.fsm.context import FSMContext
2
3
 
3
4
  from arpakitlib.ar_aiogram_util import as_tg_command
4
- from project.tg_bot.blank.admin import get_cached_admin_tg_bot_blank
5
+ from project.tg_bot.blank.admin import get_cached_eng_admin_tg_bot_blank
5
6
  from project.tg_bot.const import AdminTgBotCommands
6
7
  from project.tg_bot.filter_.is_private_chat import IsPrivateChatTgBotFilter
7
8
  from project.tg_bot.filter_.user_roles_has_admin import UserRolesHasAdminTgBotFilter
@@ -18,7 +19,11 @@ tg_bot_router = aiogram.Router()
18
19
  @as_tg_command()
19
20
  async def _(
20
21
  m: aiogram.types.Message,
22
+ state: FSMContext,
21
23
  middleware_data_tg_bot: MiddlewareDataTgBot,
22
24
  **kwargs
23
25
  ):
24
- await m.answer(text=get_cached_admin_tg_bot_blank().user_dbm(user_dbm=middleware_data_tg_bot.user_dbm))
26
+ await state.clear()
27
+ await m.answer(
28
+ text=get_cached_eng_admin_tg_bot_blank().user_dbm(user_dbm=middleware_data_tg_bot.current_user_dbm)
29
+ )
@@ -1,7 +1,7 @@
1
1
  import aiogram.filters
2
+ from aiogram.fsm.context import FSMContext
2
3
 
3
4
  from arpakitlib.ar_aiogram_util import as_tg_command
4
- from project.core.settings import get_cached_settings
5
5
  from project.tg_bot.const import AdminTgBotCommands
6
6
  from project.tg_bot.filter_.is_private_chat import IsPrivateChatTgBotFilter
7
7
  from project.tg_bot.filter_.user_roles_has_admin import UserRolesHasAdminTgBotFilter
@@ -15,10 +15,12 @@ tg_bot_router = aiogram.Router()
15
15
  UserRolesHasAdminTgBotFilter(),
16
16
  aiogram.filters.Command(AdminTgBotCommands.raise_fake_error)
17
17
  )
18
- @as_tg_command(passwd_validator=get_cached_settings().tg_bot_command_passwd)
18
+ @as_tg_command()
19
19
  async def _(
20
20
  m: aiogram.types.Message,
21
+ state: FSMContext,
21
22
  middleware_data_tg_bot: MiddlewareDataTgBot,
22
23
  **kwargs
23
24
  ):
25
+ await state.clear()
24
26
  raise Exception("fake error")
@@ -1,11 +1,12 @@
1
1
  import aiogram
2
2
  from aiogram import Router
3
3
  from aiogram.filters import Command
4
+ from aiogram.fsm.context import FSMContext
4
5
 
5
6
  from arpakitlib.ar_aiogram_util import as_tg_command
6
7
  from project.core.settings import get_cached_settings
7
8
  from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
8
- from project.tg_bot.blank.admin import get_cached_admin_tg_bot_blank
9
+ from project.tg_bot.blank.admin import get_cached_eng_admin_tg_bot_blank
9
10
  from project.tg_bot.const import AdminTgBotCommands
10
11
  from project.tg_bot.filter_.is_private_chat import IsPrivateChatTgBotFilter
11
12
  from project.tg_bot.filter_.not_prod_mode_filter import NotProdModeTgBotFilter
@@ -24,8 +25,10 @@ tg_bot_router = Router()
24
25
  @as_tg_command(passwd_validator=get_cached_settings().tg_bot_command_passwd)
25
26
  async def _(
26
27
  m: aiogram.types.Message,
28
+ state: FSMContext,
27
29
  middleware_data_tg_bot: MiddlewareDataTgBot,
28
30
  **kwargs
29
31
  ):
32
+ await state.clear()
30
33
  get_cached_sqlalchemy_db().reinit()
31
- await m.answer(text=get_cached_admin_tg_bot_blank().good())
34
+ await m.answer(text=get_cached_eng_admin_tg_bot_blank().good())
@@ -1,9 +1,10 @@
1
1
  import aiogram
2
2
  from aiogram import Router
3
3
  from aiogram.filters import Command
4
+ from aiogram.fsm.context import FSMContext
4
5
 
5
6
  from arpakitlib.ar_aiogram_util import as_tg_command
6
- from project.tg_bot.blank.admin import get_cached_admin_tg_bot_blank
7
+ from project.tg_bot.blank.admin import get_cached_eng_admin_tg_bot_blank
7
8
  from project.tg_bot.const import AdminTgBotCommands
8
9
  from project.tg_bot.filter_.is_private_chat import IsPrivateChatTgBotFilter
9
10
  from project.tg_bot.filter_.user_roles_has_admin import UserRolesHasAdminTgBotFilter
@@ -21,8 +22,10 @@ tg_bot_router = Router()
21
22
  @as_tg_command()
22
23
  async def _(
23
24
  m: aiogram.types.Message,
25
+ state: FSMContext,
24
26
  middleware_data_tg_bot: MiddlewareDataTgBot,
25
27
  **kwargs
26
28
  ):
29
+ await state.clear()
27
30
  await set_all_tg_bot_commands()
28
- await m.answer(get_cached_admin_tg_bot_blank().good())
31
+ await m.answer(get_cached_eng_admin_tg_bot_blank().good())
@@ -3,9 +3,10 @@ import logging
3
3
  import aiogram
4
4
  from aiogram import Router
5
5
  from aiogram.filters import Command, or_f
6
+ from aiogram.fsm.context import FSMContext
6
7
 
7
- from project.tg_bot.blank.client import get_cached_client_tg_bot_blank
8
- from project.tg_bot.const import GeneralTgBotCommands
8
+ from project.tg_bot.blank.client import get_cached_rus_client_tg_bot_blank
9
+ from project.tg_bot.const import ClientTgBotCommands
9
10
  from project.tg_bot.filter_.message_text import MessageTextTgBotFilter
10
11
  from project.tg_bot.middleware.common import MiddlewareDataTgBot
11
12
 
@@ -15,16 +16,18 @@ _logger = logging.getLogger(__name__)
15
16
 
16
17
  @tg_bot_router.message(
17
18
  or_f(
18
- Command(GeneralTgBotCommands.about),
19
+ Command(ClientTgBotCommands.about),
19
20
  MessageTextTgBotFilter([
20
- GeneralTgBotCommands.about,
21
+ ClientTgBotCommands.about,
21
22
  "о проекте"
22
23
  ], ignore_case=True)
23
24
  ),
24
25
  )
25
26
  async def _(
26
27
  m: aiogram.types.Message,
28
+ state: FSMContext,
27
29
  middleware_data_tg_bot: MiddlewareDataTgBot,
28
30
  **kwargs
29
31
  ):
30
- await m.answer(text=get_cached_client_tg_bot_blank().about())
32
+ await state.clear()
33
+ await m.answer(text=get_cached_rus_client_tg_bot_blank().about())
@@ -3,9 +3,10 @@ import logging
3
3
  import aiogram
4
4
  from aiogram import Router
5
5
  from aiogram.filters import Command, or_f
6
+ from aiogram.fsm.context import FSMContext
6
7
 
7
- from project.tg_bot.blank.client import get_cached_client_tg_bot_blank
8
- from project.tg_bot.const import GeneralTgBotCommands
8
+ from project.tg_bot.blank.client import get_cached_rus_client_tg_bot_blank
9
+ from project.tg_bot.const import ClientTgBotCommands
9
10
  from project.tg_bot.filter_.message_text import MessageTextTgBotFilter
10
11
  from project.tg_bot.middleware.common import MiddlewareDataTgBot
11
12
 
@@ -15,9 +16,9 @@ _logger = logging.getLogger(__name__)
15
16
 
16
17
  @tg_bot_router.message(
17
18
  or_f(
18
- Command(GeneralTgBotCommands.author),
19
+ Command(ClientTgBotCommands.author),
19
20
  MessageTextTgBotFilter([
20
- GeneralTgBotCommands.about,
21
+ ClientTgBotCommands.about,
21
22
  "автор",
22
23
  "авторы"
23
24
  ], ignore_case=True)
@@ -25,7 +26,9 @@ _logger = logging.getLogger(__name__)
25
26
  )
26
27
  async def _(
27
28
  m: aiogram.types.Message,
29
+ state: FSMContext,
28
30
  middleware_data_tg_bot: MiddlewareDataTgBot,
29
31
  **kwargs
30
32
  ):
31
- await m.answer(text=get_cached_client_tg_bot_blank().author())
33
+ await state.clear()
34
+ await m.answer(text=get_cached_rus_client_tg_bot_blank().author())
@@ -3,9 +3,10 @@ import logging
3
3
  import aiogram
4
4
  from aiogram import Router
5
5
  from aiogram.filters import Command, or_f
6
+ from aiogram.fsm.context import FSMContext
6
7
 
7
- from project.tg_bot.blank.client import get_cached_client_tg_bot_blank
8
- from project.tg_bot.const import GeneralTgBotCommands
8
+ from project.tg_bot.blank.client import get_cached_rus_client_tg_bot_blank
9
+ from project.tg_bot.const import ClientTgBotCommands
9
10
  from project.tg_bot.filter_.message_text import MessageTextTgBotFilter
10
11
  from project.tg_bot.middleware.common import MiddlewareDataTgBot
11
12
 
@@ -15,16 +16,18 @@ _logger = logging.getLogger(__name__)
15
16
 
16
17
  @tg_bot_router.message(
17
18
  or_f(
18
- Command(GeneralTgBotCommands.support),
19
+ Command(ClientTgBotCommands.cancel),
19
20
  MessageTextTgBotFilter([
20
- GeneralTgBotCommands.support,
21
- "поддержка"
21
+ ClientTgBotCommands.cancel,
22
+ "отменить",
22
23
  ], ignore_case=True)
23
24
  )
24
25
  )
25
26
  async def _(
26
27
  m: aiogram.types.Message,
28
+ state: FSMContext,
27
29
  middleware_data_tg_bot: MiddlewareDataTgBot,
28
30
  **kwargs
29
31
  ):
30
- await m.answer(text=get_cached_client_tg_bot_blank().support())
32
+ await state.clear()
33
+ await m.answer(text=get_cached_rus_client_tg_bot_blank().cancel())
@@ -3,11 +3,12 @@ import logging
3
3
  import aiogram
4
4
  from aiogram import Router
5
5
  from aiogram.exceptions import TelegramBadRequest
6
+ from aiogram.fsm.context import FSMContext
6
7
 
7
8
  from arpakitlib.ar_exception_util import exception_to_traceback_str
8
9
  from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
9
10
  from project.sqlalchemy_db_.sqlalchemy_model import StoryLogDBM
10
- from project.tg_bot.blank.client import get_cached_client_tg_bot_blank
11
+ from project.tg_bot.blank.client import get_cached_rus_client_tg_bot_blank
11
12
  from project.tg_bot.middleware.common import MiddlewareDataTgBot
12
13
 
13
14
  _logger = logging.getLogger(__name__)
@@ -18,9 +19,12 @@ tg_bot_router = Router()
18
19
  @tg_bot_router.error()
19
20
  async def _(
20
21
  error_event: aiogram.types.ErrorEvent,
22
+ state: FSMContext,
21
23
  middleware_data_tg_bot: MiddlewareDataTgBot,
22
24
  **kwargs
23
25
  ):
26
+ await state.clear()
27
+
24
28
  need_logging = True
25
29
  need_create_story_log = True
26
30
 
@@ -30,7 +34,7 @@ async def _(
30
34
  ):
31
35
  try:
32
36
  await error_event.update.event.answer(
33
- text=get_cached_client_tg_bot_blank().error()
37
+ text=get_cached_rus_client_tg_bot_blank().error()
34
38
  )
35
39
  except Exception as exception:
36
40
  _logger.error(exception)
@@ -66,7 +70,7 @@ async def _(
66
70
 
67
71
  try:
68
72
  await error_event.update.event.message.answer(
69
- text=get_cached_client_tg_bot_blank().error()
73
+ text=get_cached_rus_client_tg_bot_blank().error()
70
74
  )
71
75
  except Exception as exception:
72
76
  _logger.error(exception)
@@ -0,0 +1,21 @@
1
+ import aiogram.filters
2
+ from aiogram.fsm.context import FSMContext
3
+
4
+ from project.tg_bot.blank.client import get_cached_rus_client_tg_bot_blank
5
+ from project.tg_bot.const import ClientTgBotCommands
6
+ from project.tg_bot.middleware.common import MiddlewareDataTgBot
7
+
8
+ tg_bot_router = aiogram.Router()
9
+
10
+
11
+ @tg_bot_router.message(
12
+ aiogram.filters.Command(ClientTgBotCommands.healthcheck),
13
+ )
14
+ async def _(
15
+ m: aiogram.types.Message,
16
+ state: FSMContext,
17
+ middleware_data_tg_bot: MiddlewareDataTgBot,
18
+ **kwargs
19
+ ):
20
+ await state.clear()
21
+ await m.answer(text=get_cached_rus_client_tg_bot_blank().healthcheck())
@@ -2,8 +2,9 @@ import logging
2
2
 
3
3
  import aiogram.filters
4
4
  from aiogram.exceptions import AiogramError
5
+ from aiogram.fsm.context import FSMContext
5
6
 
6
- from project.tg_bot.blank.client import get_cached_client_tg_bot_blank
7
+ from project.tg_bot.blank.client import get_cached_rus_client_tg_bot_blank
7
8
  from project.tg_bot.middleware.common import MiddlewareDataTgBot
8
9
 
9
10
  _logger = logging.getLogger(__name__)
@@ -13,12 +14,13 @@ tg_bot_router = aiogram.Router()
13
14
  @tg_bot_router.callback_query()
14
15
  async def _(
15
16
  cq: aiogram.types.CallbackQuery,
17
+ state: FSMContext,
16
18
  middleware_data_tg_bot: MiddlewareDataTgBot,
17
19
  **kwargs
18
20
  ):
19
21
  try:
20
22
  await cq.answer(
21
- text=get_cached_client_tg_bot_blank().keyboard_is_old(),
23
+ text=get_cached_rus_client_tg_bot_blank().keyboard_is_old(),
22
24
  show_alert=True
23
25
  )
24
26
  except AiogramError as exception:
@@ -1,4 +1,5 @@
1
1
  import aiogram.filters
2
+ from aiogram.fsm.context import FSMContext
2
3
 
3
4
  from project.tg_bot.middleware.common import MiddlewareDataTgBot
4
5
 
@@ -8,6 +9,7 @@ tg_bot_router = aiogram.Router()
8
9
  @tg_bot_router.inline_query()
9
10
  async def _(
10
11
  iq: aiogram.types.InlineQuery,
12
+ state: FSMContext,
11
13
  middleware_data_tg_bot: MiddlewareDataTgBot,
12
14
  **kwargs
13
15
  ):
@@ -1,6 +1,7 @@
1
1
  import aiogram.filters
2
+ from aiogram.fsm.context import FSMContext
2
3
 
3
- from project.tg_bot.blank.client import get_cached_client_tg_bot_blank
4
+ from project.tg_bot.blank.client import get_cached_rus_client_tg_bot_blank
4
5
  from project.tg_bot.middleware.common import MiddlewareDataTgBot
5
6
 
6
7
  tg_bot_router = aiogram.Router()
@@ -9,7 +10,9 @@ tg_bot_router = aiogram.Router()
9
10
  @tg_bot_router.message()
10
11
  async def _(
11
12
  m: aiogram.types.Message,
13
+ state: FSMContext,
12
14
  middleware_data_tg_bot: MiddlewareDataTgBot,
13
15
  **kwargs
14
16
  ):
15
- await m.answer(text=get_cached_client_tg_bot_blank().raw_message())
17
+ await state.clear()
18
+ await m.answer(text=get_cached_rus_client_tg_bot_blank().raw_message())
@@ -2,8 +2,9 @@ import logging
2
2
 
3
3
  from aiogram import Router, types
4
4
  from aiogram.exceptions import AiogramError
5
+ from aiogram.fsm.context import FSMContext
5
6
 
6
- from project.tg_bot.callback.client import RemoveMessageCD
7
+ from project.tg_bot.callback.client import RemoveMessageClientCD
7
8
  from project.tg_bot.middleware.common import MiddlewareDataTgBot
8
9
 
9
10
  _logger = logging.getLogger(__name__)
@@ -11,10 +12,11 @@ tg_bot_router = Router()
11
12
 
12
13
 
13
14
  @tg_bot_router.callback_query(
14
- RemoveMessageCD.filter(),
15
+ RemoveMessageClientCD.filter(),
15
16
  )
16
17
  async def _(
17
18
  cq: types.CallbackQuery,
19
+ state: FSMContext,
18
20
  middleware_data_tg_bot: MiddlewareDataTgBot,
19
21
  **kwargs
20
22
  ):
@@ -3,9 +3,10 @@ import logging
3
3
  import aiogram
4
4
  from aiogram import Router
5
5
  from aiogram.filters import Command, or_f
6
+ from aiogram.fsm.context import FSMContext
6
7
 
7
- from project.tg_bot.blank.client import get_cached_client_tg_bot_blank
8
- from project.tg_bot.const import GeneralTgBotCommands
8
+ from project.tg_bot.blank.client import get_cached_rus_client_tg_bot_blank
9
+ from project.tg_bot.const import ClientTgBotCommands
9
10
  from project.tg_bot.filter_.message_text import MessageTextTgBotFilter
10
11
  from project.tg_bot.middleware.common import MiddlewareDataTgBot
11
12
 
@@ -15,9 +16,9 @@ _logger = logging.getLogger(__name__)
15
16
 
16
17
  @tg_bot_router.message(
17
18
  or_f(
18
- Command(GeneralTgBotCommands.start),
19
+ Command(ClientTgBotCommands.start),
19
20
  MessageTextTgBotFilter([
20
- GeneralTgBotCommands.start,
21
+ ClientTgBotCommands.start,
21
22
  "начать",
22
23
  "старт",
23
24
  "привет",
@@ -28,7 +29,9 @@ _logger = logging.getLogger(__name__)
28
29
  )
29
30
  async def _(
30
31
  m: aiogram.types.Message,
32
+ state: FSMContext,
31
33
  middleware_data_tg_bot: MiddlewareDataTgBot,
32
34
  **kwargs
33
35
  ):
34
- await m.answer(text=get_cached_client_tg_bot_blank().welcome())
36
+ await state.clear()
37
+ await m.answer(text=get_cached_rus_client_tg_bot_blank().welcome())
@@ -0,0 +1,37 @@
1
+ import logging
2
+
3
+ import aiogram
4
+ from aiogram import Router
5
+ from aiogram.filters import Command, or_f
6
+ from aiogram.fsm.context import FSMContext
7
+
8
+ from project.tg_bot.blank.client import get_cached_rus_client_tg_bot_blank
9
+ from project.tg_bot.const import ClientTgBotCommands
10
+ from project.tg_bot.filter_.message_text import MessageTextTgBotFilter
11
+ from project.tg_bot.kb.inline_.client.support import support_client_inline_kb_tg_bot
12
+ from project.tg_bot.middleware.common import MiddlewareDataTgBot
13
+
14
+ tg_bot_router = Router()
15
+ _logger = logging.getLogger(__name__)
16
+
17
+
18
+ @tg_bot_router.message(
19
+ or_f(
20
+ Command(ClientTgBotCommands.support),
21
+ MessageTextTgBotFilter([
22
+ ClientTgBotCommands.support,
23
+ "поддержка"
24
+ ], ignore_case=True)
25
+ )
26
+ )
27
+ async def _(
28
+ m: aiogram.types.Message,
29
+ state: FSMContext,
30
+ middleware_data_tg_bot: MiddlewareDataTgBot,
31
+ **kwargs
32
+ ):
33
+ await state.clear()
34
+ await m.answer(
35
+ text=get_cached_rus_client_tg_bot_blank().support(),
36
+ reply_markup=support_client_inline_kb_tg_bot()
37
+ )
@@ -2,12 +2,22 @@ from aiogram import Router
2
2
 
3
3
  from project.tg_bot.router.admin import reinit_sqlalchemy_db, arpakitlib_project_template_info, raise_fake_error, me, \
4
4
  log_file, clear_log_file, set_tg_bot_commands, init_sqlalchemy_db, drop_sqlalchemy_db, kb_with_remove_message, \
5
- kb_with_old_cd, kb_with_raise_error, kb_with_not_modified
6
- from project.tg_bot.router.general import remove_message, start, about, healthcheck, hello_world, \
7
- support, error_handler, raw_callback_query, raw_message, raw_inline_query, author
5
+ kb_with_old_cd, kb_with_raise_error, kb_with_not_modified, current_state, hello_world
6
+ from project.tg_bot.router.client import remove_message, start, about, healthcheck, \
7
+ support, error_handler, raw_callback_query, raw_message, raw_inline_query, author, cancel
8
8
 
9
9
  main_tg_bot_router = Router()
10
10
 
11
+ # client
12
+ main_tg_bot_router.include_router(router=error_handler.tg_bot_router)
13
+ main_tg_bot_router.include_router(router=remove_message.tg_bot_router)
14
+ main_tg_bot_router.include_router(router=start.tg_bot_router)
15
+ main_tg_bot_router.include_router(router=about.tg_bot_router)
16
+ main_tg_bot_router.include_router(router=healthcheck.tg_bot_router)
17
+ main_tg_bot_router.include_router(router=support.tg_bot_router)
18
+ main_tg_bot_router.include_router(router=author.tg_bot_router)
19
+ main_tg_bot_router.include_router(router=cancel.tg_bot_router)
20
+
11
21
  # admin
12
22
  main_tg_bot_router.include_router(router=reinit_sqlalchemy_db.tg_bot_router)
13
23
  main_tg_bot_router.include_router(router=arpakitlib_project_template_info.tg_bot_router)
@@ -22,16 +32,10 @@ main_tg_bot_router.include_router(router=kb_with_remove_message.tg_bot_router)
22
32
  main_tg_bot_router.include_router(router=kb_with_old_cd.tg_bot_router)
23
33
  main_tg_bot_router.include_router(router=kb_with_raise_error.tg_bot_router)
24
34
  main_tg_bot_router.include_router(router=kb_with_not_modified.tg_bot_router)
25
-
26
- # general
27
- main_tg_bot_router.include_router(router=error_handler.tg_bot_router)
28
- main_tg_bot_router.include_router(router=remove_message.tg_bot_router)
29
- main_tg_bot_router.include_router(router=start.tg_bot_router)
30
- main_tg_bot_router.include_router(router=about.tg_bot_router)
31
- main_tg_bot_router.include_router(router=healthcheck.tg_bot_router)
35
+ main_tg_bot_router.include_router(router=current_state.tg_bot_router)
32
36
  main_tg_bot_router.include_router(router=hello_world.tg_bot_router)
33
- main_tg_bot_router.include_router(router=support.tg_bot_router)
34
- main_tg_bot_router.include_router(router=author.tg_bot_router)
37
+
38
+ # client
35
39
  main_tg_bot_router.include_router(router=raw_message.tg_bot_router)
36
40
  main_tg_bot_router.include_router(router=raw_inline_query.tg_bot_router)
37
41
  main_tg_bot_router.include_router(router=raw_callback_query.tg_bot_router)
@@ -0,0 +1,5 @@
1
+ from aiogram.fsm.state import StatesGroup, State
2
+
3
+
4
+ class HelloWorldClientStates(StatesGroup):
5
+ input_text = State()
@@ -2,7 +2,7 @@ import aiogram
2
2
  from aiogram.fsm.storage.memory import MemoryStorage
3
3
 
4
4
  from project.tg_bot.event import add_events_to_tg_bot_dispatcher
5
- from project.tg_bot.middleware.middleware import register_middlewares_to_tg_bot
5
+ from project.tg_bot.middleware.uil import register_middlewares_to_tg_bot
6
6
  from project.tg_bot.router.main_router import main_tg_bot_router
7
7
 
8
8