ksaa 2025.7.7.0__py3-none-any.whl → 2025.7.9.0__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 (169) hide show
  1. kotonebot/backend/context/context.py +19 -6
  2. kotonebot/kaa/common.py +2 -976
  3. kotonebot/kaa/config/__init__.py +62 -0
  4. kotonebot/kaa/config/const.py +255 -0
  5. kotonebot/kaa/config/migrations/__init__.py +28 -0
  6. kotonebot/kaa/config/migrations/_idol.py +106 -0
  7. kotonebot/kaa/config/migrations/_v1_to_v2.py +203 -0
  8. kotonebot/kaa/config/migrations/_v2_to_v3.py +126 -0
  9. kotonebot/kaa/config/migrations/_v3_to_v4.py +29 -0
  10. kotonebot/kaa/config/migrations/_v4_to_v5.py +26 -0
  11. kotonebot/kaa/config/migrations/_v5_to_v6.py +134 -0
  12. kotonebot/kaa/config/produce.py +255 -0
  13. kotonebot/kaa/config/schema.py +236 -0
  14. kotonebot/kaa/config/upgrade.py +63 -0
  15. kotonebot/kaa/game_ui/commu_event_buttons.py +3 -0
  16. kotonebot/kaa/game_ui/schedule.py +1 -1
  17. kotonebot/kaa/main/gr.py +804 -168
  18. kotonebot/kaa/main/kaa.py +19 -13
  19. kotonebot/kaa/metadata.py +31 -0
  20. kotonebot/kaa/resources/__pycache__/__init__.cpython-310.pyc +0 -0
  21. kotonebot/kaa/tasks/R.py +126 -126
  22. kotonebot/kaa/tasks/daily/acquire_activity_funds.py +1 -1
  23. kotonebot/kaa/tasks/daily/acquire_presents.py +1 -1
  24. kotonebot/kaa/tasks/daily/assignment.py +1 -1
  25. kotonebot/kaa/tasks/daily/capsule_toys.py +1 -1
  26. kotonebot/kaa/tasks/daily/club_reward.py +1 -1
  27. kotonebot/kaa/tasks/daily/contest.py +1 -1
  28. kotonebot/kaa/tasks/daily/mission_reward.py +1 -1
  29. kotonebot/kaa/tasks/daily/purchase.py +1 -1
  30. kotonebot/kaa/tasks/daily/upgrade_support_card.py +1 -1
  31. kotonebot/kaa/tasks/end_game.py +1 -1
  32. kotonebot/kaa/tasks/produce/cards.py +1 -1
  33. kotonebot/kaa/tasks/produce/common.py +3 -2
  34. kotonebot/kaa/tasks/produce/in_purodyuusu.py +9 -7
  35. kotonebot/kaa/tasks/produce/non_lesson_actions.py +3 -2
  36. kotonebot/kaa/tasks/produce/produce.py +27 -22
  37. kotonebot/kaa/tasks/start_game.py +1 -1
  38. {ksaa-2025.7.7.0.dist-info → ksaa-2025.7.9.0.dist-info}/METADATA +1 -1
  39. {ksaa-2025.7.7.0.dist-info → ksaa-2025.7.9.0.dist-info}/RECORD +169 -157
  40. /kotonebot/kaa/sprites/{21fe29c2-f49b-473f-8ac3-896b4d3c72f5.png → 02cf0df9-37d6-4387-b8eb-c92589264c2a.png} +0 -0
  41. /kotonebot/kaa/sprites/{d07f0d30-465e-4b4e-803f-a81aeabdd1e8.png → 02d4e179-912e-4e1f-ba7d-ea37fe87279e.png} +0 -0
  42. /kotonebot/kaa/sprites/{87a59b06-0ac7-4a35-93c4-3705bf9e774a.png → 037cb117-8521-4670-b3ec-ee0e260c1d62.png} +0 -0
  43. /kotonebot/kaa/sprites/{835a1f3e-5a06-4490-bc2e-c6d3d8edc1fd.png → 04be14b5-4169-4b3e-ab14-224db52c9a39.png} +0 -0
  44. /kotonebot/kaa/sprites/{6faf9942-994d-418a-ae42-25c5fcffa79e.png → 06bb9a6e-1dbe-48db-91d7-51d9fc3ffcce.png} +0 -0
  45. /kotonebot/kaa/sprites/{308818b7-a252-45a6-868d-553c078b3752.png → 08444afd-90d4-43ac-b3ee-128a5bdef4a2.png} +0 -0
  46. /kotonebot/kaa/sprites/{f957edb2-3534-4d1d-a9be-70b478b2ff63.png → 0910c5f3-7f72-4385-967c-4bf226c9861b.png} +0 -0
  47. /kotonebot/kaa/sprites/{20748b0c-889f-4706-857b-48fc921a88e3.png → 0b332c2c-aa57-4f10-aa55-8e981f2e7c27.png} +0 -0
  48. /kotonebot/kaa/sprites/{e007420c-b92b-414c-96a3-d556e3c25cb2.png → 0c4ee900-3e44-4e37-a199-32d66daa2025.png} +0 -0
  49. /kotonebot/kaa/sprites/{688d653e-7ee7-4d41-ac79-b4efd6c3cadd.png → 0cfd52cc-1f38-4804-bc1f-8da9cc51d969.png} +0 -0
  50. /kotonebot/kaa/sprites/{4d3e267c-552c-4a65-840a-dc72a61c8db1.png → 131d5c1b-70b3-47d3-b6d6-318045629037.png} +0 -0
  51. /kotonebot/kaa/sprites/{d5899bda-b311-469d-b4fb-963799ef1720.png → 133dbdd9-23fa-4157-9f9e-fd1728207bd0.png} +0 -0
  52. /kotonebot/kaa/sprites/{f2d614b3-d3bf-4340-b261-f4c385a59e4e.png → 17d2730b-e56e-4956-973d-5f822490a2c5.png} +0 -0
  53. /kotonebot/kaa/sprites/{d7d6ace9-35f1-4c71-b4c1-9de938b254f4.png → 231b3e86-cfc5-4e08-803b-63ed680ab1ad.png} +0 -0
  54. /kotonebot/kaa/sprites/{5efa51e6-5cb7-4843-9397-8d71c6175fcf.png → 2569011c-3bad-416c-b358-ceaf313507e8.png} +0 -0
  55. /kotonebot/kaa/sprites/{466524da-0d9e-424f-82eb-d6e6d3145bd3.png → 26dd326a-a6da-4350-8140-217e9d6a6109.png} +0 -0
  56. /kotonebot/kaa/sprites/{2712893d-0219-43e1-8de7-c2761456719e.png → 29119167-eb9c-4c35-9c63-9c9967f85163.png} +0 -0
  57. /kotonebot/kaa/sprites/{99b58811-42ff-415b-9229-f5c75cbe1a1a.png → 2b8385d8-ea7e-4675-9d16-57b905a18d90.png} +0 -0
  58. /kotonebot/kaa/sprites/{b974e1ac-1f24-4498-aa84-62cb5c0984e7.png → 2cd2047f-91af-4632-8cb2-eb2fc4b4c808.png} +0 -0
  59. /kotonebot/kaa/sprites/{e6a16a1e-e821-45f0-bc64-f2e0dab7efd7.png → 314bc3ab-8c73-4517-ae7c-75d21ac61448.png} +0 -0
  60. /kotonebot/kaa/sprites/{8308964d-96d1-4b7e-b0fa-b20163311153.png → 33e4e6c9-d245-4174-8303-04019ce20136.png} +0 -0
  61. /kotonebot/kaa/sprites/{774ca489-09c2-414e-b27b-f32d3bf6894d.png → 34cce4b7-53fe-4ea2-82d8-d31fe7b9abcd.png} +0 -0
  62. /kotonebot/kaa/sprites/{cdc6e5e2-5b38-4471-b23f-17ec229268db.png → 3820d53e-5b87-4a35-9472-e90498225853.png} +0 -0
  63. /kotonebot/kaa/sprites/{f26d4e09-2511-48e4-9c69-ba413ddf65e1.png → 38e35291-2a94-4261-9b58-80d7b17165c9.png} +0 -0
  64. /kotonebot/kaa/sprites/{bcb990e6-58ae-460d-859a-812b4121e716.png → 3ae6e096-42e4-4ac4-ad79-6f2529925c16.png} +0 -0
  65. /kotonebot/kaa/sprites/{80c45554-0758-47eb-b9d7-d8c10f462ae5.png → 3c41fb45-6400-4818-9066-e03d60d2a895.png} +0 -0
  66. /kotonebot/kaa/sprites/{b2f31f86-b7ae-4eb1-8042-d14c5b226714.png → 3e9adf0f-f6c5-4d68-9667-97ea2f82bb51.png} +0 -0
  67. /kotonebot/kaa/sprites/{18369504-36b1-4b10-93e6-878c2cae6c8f.png → 3ef649e7-c03a-40d1-9a76-653faaf799df.png} +0 -0
  68. /kotonebot/kaa/sprites/{23464a7b-dc7a-439c-86b7-04a5dd506412.png → 43226a61-3d61-4acb-afbb-812bf9e97843.png} +0 -0
  69. /kotonebot/kaa/sprites/{1762b8dc-abb8-402e-88b9-22111b054d27.png → 443a5dbf-e2fb-4d34-bb09-c21e1437f715.png} +0 -0
  70. /kotonebot/kaa/sprites/{76f43a30-b76d-4648-91b6-49f2786e668d.png → 459851f5-fa20-45c4-a6d2-1018b3976fcd.png} +0 -0
  71. /kotonebot/kaa/sprites/{bbfb7670-2537-4a92-9a39-487d174f27a0.png → 46c520e7-7b97-43be-8cc2-21e478b5d844.png} +0 -0
  72. /kotonebot/kaa/sprites/{6d4337f4-e30c-44eb-bab9-220a46c0c96f.png → 4867e835-c805-463e-9a53-1e677e3d140f.png} +0 -0
  73. /kotonebot/kaa/sprites/{2f4f3d81-2a8c-49d3-84a8-4d1205237ed4.png → 48ebb790-2310-436d-a31c-dba4db034cbc.png} +0 -0
  74. /kotonebot/kaa/sprites/{c692a9b3-8a2a-42f1-8f63-ad8bd553272d.png → 4b8ebe86-7a0d-474a-abac-b4a45fda5e88.png} +0 -0
  75. /kotonebot/kaa/sprites/{6f638005-aa18-4804-a5fe-269de4d1ad9e.png → 4c235498-622f-4f74-9ebb-df3fcd3306ab.png} +0 -0
  76. /kotonebot/kaa/sprites/{05d933de-6274-4d46-a81b-860de1981ebc.png → 4f3d2710-5626-4471-9b21-cd01b8c542d1.png} +0 -0
  77. /kotonebot/kaa/sprites/{dfb1d18d-b768-46c4-9d31-b654ba7a2b6d.png → 4f4e3cf3-b1d9-436b-9477-5f2244c20d6b.png} +0 -0
  78. /kotonebot/kaa/sprites/{1cede0b7-5042-481c-b507-957dd98ec17a.png → 4f891dc4-71c0-4492-a8d1-0c52978e75e1.png} +0 -0
  79. /kotonebot/kaa/sprites/{30ff50f2-7ab2-4a1d-88db-fd6deaba328e.png → 4ff46fa5-fe9e-4103-8012-451adc14dc43.png} +0 -0
  80. /kotonebot/kaa/sprites/{e798ff2f-6f30-4536-923a-a65433817423.png → 5399e464-1ee6-406b-acab-7826e30f3fd9.png} +0 -0
  81. /kotonebot/kaa/sprites/{51eac702-ca23-4aba-b75a-cdb03a93a117.png → 540a64f4-8111-4df4-abfe-0e62e0f8c7af.png} +0 -0
  82. /kotonebot/kaa/sprites/{c9e507d5-94dd-4ff3-b995-70c6cb360095.png → 5422d945-aa90-443e-bf79-f8ab93ec9411.png} +0 -0
  83. /kotonebot/kaa/sprites/{31dd40b0-1c07-4d6c-aabe-fd3e4895f4df.png → 585c7846-f353-448f-8eb9-1ceafec94555.png} +0 -0
  84. /kotonebot/kaa/sprites/{e87f0760-4bc9-4d7f-91e2-5452ba0fcd9d.png → 5a87228a-ec5d-4ffc-951a-1454c9c03bdc.png} +0 -0
  85. /kotonebot/kaa/sprites/{b73fa422-bf9c-43aa-ad80-ae92286042e6.png → 5b14a452-ea54-4804-8ec0-3cd916cd8e88.png} +0 -0
  86. /kotonebot/kaa/sprites/{467fe027-96ba-48b1-963b-75a5c41277c4.png → 5cc8ccda-2cf7-4956-b67d-15327bc75ed6.png} +0 -0
  87. /kotonebot/kaa/sprites/{e614c8e1-1d7b-4535-a8ba-cbf09fd5b163.png → 5e27d1c5-cc3f-4aee-8d79-69c09206fa3d.png} +0 -0
  88. /kotonebot/kaa/sprites/{c1336997-ea27-4d53-9c64-826ca7eca11f.png → 64938ad2-442f-41eb-a544-4d2611e8012f.png} +0 -0
  89. /kotonebot/kaa/sprites/{f9b38a5e-72cb-4b18-8817-18473effd41d.png → 65223004-722e-4003-af09-c7769e8a7cb2.png} +0 -0
  90. /kotonebot/kaa/sprites/{6f06519d-4f33-4418-b4cb-35a7356cc121.png → 659a1775-7001-4add-96e9-292693a26b60.png} +0 -0
  91. /kotonebot/kaa/sprites/{e64c9477-35f7-4f05-995f-f3f38bb7db66.png → 6626694b-1394-44af-b76b-791c5bb2428b.png} +0 -0
  92. /kotonebot/kaa/sprites/{5cff1e6f-81ea-4d4a-88ba-209cf3bbb165.png → 6a202eb6-dd41-4675-a840-99dde2b2efa4.png} +0 -0
  93. /kotonebot/kaa/sprites/{10713c56-e462-4543-8a51-02f220ed6943.png → 6b2e887b-e113-4280-9779-6795c2782c58.png} +0 -0
  94. /kotonebot/kaa/sprites/{6df0db09-9159-43b5-a6b9-43a2dfdafdab.png → 6eb959e1-ee64-4fa6-a20f-8ee4e51f2c6a.png} +0 -0
  95. /kotonebot/kaa/sprites/{7dd1c478-719f-4432-891f-9543064fd1fc.png → 7098fbf7-b8cc-4933-bfec-12a2ac98e38c.png} +0 -0
  96. /kotonebot/kaa/sprites/{c7e90767-3661-4e86-8c54-8e1d1e83d113.png → 712e9223-4dd2-4ff6-887b-4182fd243d78.png} +0 -0
  97. /kotonebot/kaa/sprites/{acd1a611-f93d-4d32-8070-dc325b42eeb9.png → 7256a95e-24b8-40fd-bd8e-73a1572c3f93.png} +0 -0
  98. /kotonebot/kaa/sprites/{6490c5b2-2ed8-44d6-93b8-72d88434b49e.png → 73f89439-c4e3-4263-8fa7-229cde98aa99.png} +0 -0
  99. /kotonebot/kaa/sprites/{2154ebd3-9c89-4355-b4f4-a5e18ecf728d.png → 74efd362-4cc1-4b9f-8032-e5bc45c2af5c.png} +0 -0
  100. /kotonebot/kaa/sprites/{a586f586-85e9-439e-ab3f-905d6cbe6746.png → 756ac796-ce43-4ddb-989e-13bf07cbe3b7.png} +0 -0
  101. /kotonebot/kaa/sprites/{78c0f6b4-c09d-4b44-9b5e-35e1e40dd748.png → 77193249-7e2a-4652-ab6d-a463350ca226.png} +0 -0
  102. /kotonebot/kaa/sprites/{0eb4e53c-f0af-4c86-870c-b1db087d53db.png → 784a91b2-4d24-461f-8bd3-2f02b9bc193f.png} +0 -0
  103. /kotonebot/kaa/sprites/{f18c683d-1eb2-4279-a05c-c411683354df.png → 83c67f2a-0f73-4238-a5a8-8ebb839ed99a.png} +0 -0
  104. /kotonebot/kaa/sprites/{3ddd0976-7c8b-4c67-bac7-a0cc1af3bfad.png → 86b3bab1-c5f6-48b2-b810-c3ec55c32314.png} +0 -0
  105. /kotonebot/kaa/sprites/{bfd495eb-7ec2-47d7-aff2-59c1a663be5d.png → 872838c5-47c6-4f78-b105-0a72b5459f16.png} +0 -0
  106. /kotonebot/kaa/sprites/{b720a22b-a2f1-4686-969d-2a2edd8fb96b.png → 93f03304-5609-4f4f-9ac8-a46e7b883960.png} +0 -0
  107. /kotonebot/kaa/sprites/{4e040068-e2ae-4348-80a2-f113c2426d46.png → 97e96ecf-e51b-4a09-ab11-3c164196747f.png} +0 -0
  108. /kotonebot/kaa/sprites/{5367d7ad-5a27-42e4-a7d9-5bf27102f502.png → 992473c3-df0a-4c72-8134-f2aac9e7b0f6.png} +0 -0
  109. /kotonebot/kaa/sprites/{c686d99a-248a-460b-a4fe-2fa5b8e9660b.png → 9d86ab77-de0b-433d-9b0e-5aba283309a6.png} +0 -0
  110. /kotonebot/kaa/sprites/{5d5db2d4-2648-40fe-bd17-05aea9afbc7d.png → 9eb202c8-c61a-4918-beb9-b0f03739b0b3.png} +0 -0
  111. /kotonebot/kaa/sprites/{f3e4e9ec-ddd6-42c4-9638-b93ff4e6b514.png → a4e02797-2c5d-4860-aaa4-c20c43be7500.png} +0 -0
  112. /kotonebot/kaa/sprites/{2d4001e6-137e-40b2-94b0-ba3ae9e397e4.png → a5c582f5-3627-44be-b574-a4e4287376e0.png} +0 -0
  113. /kotonebot/kaa/sprites/{b2743383-a3e4-43ff-82a3-3c7c6450fc50.png → a914da74-9752-42be-913b-86514eb4b589.png} +0 -0
  114. /kotonebot/kaa/sprites/{9d94c24c-5aab-4fb6-8fa7-902cebac134c.png → aacb651b-9a3d-42a1-9fc0-9187dc8cded7.png} +0 -0
  115. /kotonebot/kaa/sprites/{7315c6b9-6fda-4790-8e9a-c8c4220834e1.png → ae146d94-5e69-4970-b175-d7c8c4f9a9cd.png} +0 -0
  116. /kotonebot/kaa/sprites/{acd01a53-c689-4ffd-ae45-744a37c70197.png → ae57e1fb-c42f-4401-93a1-76d4591b5fad.png} +0 -0
  117. /kotonebot/kaa/sprites/{d108794a-60b8-4637-bced-84f46140eaac.png → b1878d2b-4908-4342-b395-864aafa5c54b.png} +0 -0
  118. /kotonebot/kaa/sprites/{fffa0118-dd3a-4d01-8c4e-d43182778391.png → b26e3c78-a6be-4ad1-8992-c3245b1a6f9b.png} +0 -0
  119. /kotonebot/kaa/sprites/{f5917c99-185e-4bd9-b367-972c77accb44.png → b3a41d58-f375-4882-bebb-57f72322d016.png} +0 -0
  120. /kotonebot/kaa/sprites/{59997849-5a5a-4589-a4ff-e91a789fc68d.png → b4905122-7d97-4561-a14a-b8a9a5cd9227.png} +0 -0
  121. /kotonebot/kaa/sprites/{2d0ed04f-777a-4a69-9a58-0be791260dca.png → b534423c-2024-4234-9886-f49e17dd96e7.png} +0 -0
  122. /kotonebot/kaa/sprites/{898325da-307d-4108-ab4c-25d9ae94ee24.png → b6680d31-8552-4111-bc39-0867c06bf94a.png} +0 -0
  123. /kotonebot/kaa/sprites/{5587551f-011c-4f94-86e8-7e81d08c4be2.png → b6c637bf-5fdd-4e68-b4d8-b403bf611f3b.png} +0 -0
  124. /kotonebot/kaa/sprites/{4abd8e80-83ef-4d1a-b143-e6ad0ac189ab.png → b9e19bda-3793-4cf4-928a-fc43642b32e6.png} +0 -0
  125. /kotonebot/kaa/sprites/{9e861b2e-f896-4738-b0d0-9b703395720d.png → bc1c640a-87d8-47af-9fcc-8681acac7b27.png} +0 -0
  126. /kotonebot/kaa/sprites/{54d71b39-a3f2-4f20-a294-b6b5ef9c56f3.png → bc25ed87-50a7-4aa8-b743-505450677b00.png} +0 -0
  127. /kotonebot/kaa/sprites/{4112f697-094b-4046-bfac-409f156784b0.png → bcf2f87a-de7f-4fb9-aa6c-0b4f6bff921e.png} +0 -0
  128. /kotonebot/kaa/sprites/{54f5e4d6-44f9-4249-bf80-aaaacf0a8d52.png → bdd0e8f8-3d35-48e8-b735-66eaf2ece2e6.png} +0 -0
  129. /kotonebot/kaa/sprites/{1e398be7-49ac-4eb6-b828-b935f042037a.png → bec6c0cf-40f6-446d-85b3-c692d3322a51.png} +0 -0
  130. /kotonebot/kaa/sprites/{af0f65a5-8d32-4211-86df-66b3fa609462.png → bf19069d-e044-4f76-93f7-f2ecd3214e47.png} +0 -0
  131. /kotonebot/kaa/sprites/{4eb9a3a1-da46-493b-a17d-5eb9ef53524c.png → c1274e01-2cc7-432f-b244-65ffe8269656.png} +0 -0
  132. /kotonebot/kaa/sprites/{177ee196-1013-487e-9944-64c4a9b803ef.png → c65d71af-ffb3-4992-b954-c59ae48615b8.png} +0 -0
  133. /kotonebot/kaa/sprites/{f9e8cde8-fda0-4436-8072-6bc32c3c0b8e.png → c67852a2-30a9-4fd6-a4c2-83870a658998.png} +0 -0
  134. /kotonebot/kaa/sprites/{3de5ce1b-f72b-450a-a1de-5a841fbd507a.png → c705eece-67d8-4017-a4d9-a7f1337f67be.png} +0 -0
  135. /kotonebot/kaa/sprites/{5200fbda-653d-4b6f-84d8-15793cc53684.png → c86a3385-407e-40d5-b519-1927406d5b09.png} +0 -0
  136. /kotonebot/kaa/sprites/{08f93e03-18c9-42e3-9a2f-7d7954f585b0.png → ca42ca0c-3829-4e43-88c9-db4939cfa982.png} +0 -0
  137. /kotonebot/kaa/sprites/{3e9bdd08-3a74-40b3-8320-05ed4e8fe5d7.png → cba7528d-ae17-4a37-b388-6f86e1a590f4.png} +0 -0
  138. /kotonebot/kaa/sprites/{1cd922b1-cd9c-4b60-b7e7-014c59217cb0.png → cc1767ec-77db-49ac-8c9e-f48d1fb7b071.png} +0 -0
  139. /kotonebot/kaa/sprites/{2ffd9c12-0520-4f9c-92b1-bfdef0681583.png → ce282e51-7067-4293-ad26-24dbba172a08.png} +0 -0
  140. /kotonebot/kaa/sprites/{1d714b45-6b20-40ba-8e0b-e7c106f0c8f3.png → d1e5672d-df91-4316-984c-48550c5d1931.png} +0 -0
  141. /kotonebot/kaa/sprites/{126f5161-3567-4c76-8e91-371392e39a9c.png → d2d99405-7927-47fc-be4c-a7591b339a6c.png} +0 -0
  142. /kotonebot/kaa/sprites/{489feedd-f44e-4714-ad24-b53630dfcf27.png → d356fc84-a8c0-4d0f-a3ed-c7ff5ccd276c.png} +0 -0
  143. /kotonebot/kaa/sprites/{0089161a-0dac-41da-97af-b9200339a383.png → d477e49c-37cc-4e71-a8e6-6633f044260a.png} +0 -0
  144. /kotonebot/kaa/sprites/{2ed453f3-9c31-4c96-95dd-1a6aa68302f7.png → d4b1e48b-bf9c-4f44-9ddb-3af8eb4ea464.png} +0 -0
  145. /kotonebot/kaa/sprites/{6a45398a-4240-4fb7-8926-fa1254125bbf.png → d6d6229a-2345-4fe7-b2c5-109fcdb37c39.png} +0 -0
  146. /kotonebot/kaa/sprites/{adf0eea7-a052-410b-b479-8c672ae38268.png → d953cdee-08b5-45fb-908b-2644220b0f07.png} +0 -0
  147. /kotonebot/kaa/sprites/{3091351b-ab63-4688-8082-32545052d7a8.png → de069910-6085-45a9-ba96-64bc7aeead77.png} +0 -0
  148. /kotonebot/kaa/sprites/{7c40ea85-87f6-4531-a25a-896dd70b49d1.png → dea4c704-5739-423f-a15c-f31a4a93d64f.png} +0 -0
  149. /kotonebot/kaa/sprites/{dd431a8a-3ffa-43d6-96c6-4e84aa946b72.png → debc6a94-9bf1-46d7-b0b0-0c55cb367f12.png} +0 -0
  150. /kotonebot/kaa/sprites/{06e7d3f6-1ab8-4714-8ab5-8af71dcbfa78.png → e0555145-9446-4ebe-965b-f46b458e5681.png} +0 -0
  151. /kotonebot/kaa/sprites/{025f1786-cd28-4a08-ad81-178d267dbb1a.png → e19c5f10-5f93-4431-9bf3-4f92512eab6e.png} +0 -0
  152. /kotonebot/kaa/sprites/{2146a037-c3ad-4c33-834c-ddd7f3b7876c.png → e353b4cb-ea6d-4fc4-91ec-c19582e9507c.png} +0 -0
  153. /kotonebot/kaa/sprites/{d43f214a-4db4-4222-941c-3d3216a0c0c3.png → e6554fee-c6fd-49ee-8c32-b4932fc701da.png} +0 -0
  154. /kotonebot/kaa/sprites/{0913f34e-1790-4afb-af31-9a5e94d54b05.png → e916a5ca-287c-4cbe-93ca-22b439c5ffab.png} +0 -0
  155. /kotonebot/kaa/sprites/{899ad2c0-7b23-4b77-aed4-34ba4911672b.png → ed4a2db1-ab2e-4b36-8d6f-5b7961501475.png} +0 -0
  156. /kotonebot/kaa/sprites/{e93a983d-b869-45e4-8a5c-cd1c9d511b11.png → ed4a318e-f69a-4fb9-9853-9746f01c6015.png} +0 -0
  157. /kotonebot/kaa/sprites/{4670fd78-3748-4df3-968b-25c8246da92b.png → efe68984-8dbc-417e-924c-87c6860c58ef.png} +0 -0
  158. /kotonebot/kaa/sprites/{e6d0979a-cd27-4933-b528-7777be525ace.png → f165bf01-9e9d-4afb-87d9-4a26318140cf.png} +0 -0
  159. /kotonebot/kaa/sprites/{fc44214e-ef8a-4ea1-baec-35674ce0c4d6.png → f2846992-402e-4f50-b74e-91d6f3b8994d.png} +0 -0
  160. /kotonebot/kaa/sprites/{bad07ebd-c8e7-4721-ab74-a38fa30e0401.png → f4227a80-f62d-4daf-83d0-c7b5500088ee.png} +0 -0
  161. /kotonebot/kaa/sprites/{97e33fa0-1442-418d-b393-3b916312c9e1.png → f496a454-5cf5-4b6b-aedb-1dad58c85035.png} +0 -0
  162. /kotonebot/kaa/sprites/{119f04e2-3871-46a8-9d5c-808c641f7aae.png → f4af8fb2-6270-4b75-8b24-d0e49daebac1.png} +0 -0
  163. /kotonebot/kaa/sprites/{0a3c0a4e-a979-401c-9bf3-a389e8a74e7b.png → f60c40a1-750b-41ac-9d24-2d7ffce44166.png} +0 -0
  164. /kotonebot/kaa/sprites/{c639b2f6-35f2-4924-9e81-878637c176a6.png → f6c3bd48-fe1e-4fe3-bf58-13422b5b4a99.png} +0 -0
  165. /kotonebot/kaa/sprites/{84c0f8bf-c670-47d4-8d5c-06de599f7c40.png → ffaffa14-22dd-4397-8dc1-7b94fd4cf06b.png} +0 -0
  166. {ksaa-2025.7.7.0.dist-info → ksaa-2025.7.9.0.dist-info}/WHEEL +0 -0
  167. {ksaa-2025.7.7.0.dist-info → ksaa-2025.7.9.0.dist-info}/entry_points.txt +0 -0
  168. {ksaa-2025.7.7.0.dist-info → ksaa-2025.7.9.0.dist-info}/licenses/LICENSE +0 -0
  169. {ksaa-2025.7.7.0.dist-info → ksaa-2025.7.9.0.dist-info}/top_level.txt +0 -0
@@ -2,7 +2,7 @@
2
2
  import logging
3
3
 
4
4
  from kotonebot.kaa.tasks import R
5
- from kotonebot.kaa.common import conf
5
+ from kotonebot.kaa.config import conf
6
6
  from ..actions.scenes import at_home, goto_home
7
7
  from kotonebot import device, image, task, color, rect_expand, sleep
8
8
 
@@ -4,7 +4,7 @@ from typing import Literal
4
4
  from datetime import timedelta
5
5
 
6
6
  from kotonebot.kaa.tasks import R
7
- from kotonebot.kaa.common import conf
7
+ from kotonebot.kaa.config import conf
8
8
  from ..actions.scenes import at_home, goto_home
9
9
  from kotonebot import task, device, image, action, ocr, contains, cropped, rect_expand, color, sleep, regex
10
10
 
@@ -2,7 +2,7 @@
2
2
  import logging
3
3
 
4
4
  from kotonebot.kaa.tasks import R
5
- from kotonebot.kaa.common import conf
5
+ from kotonebot.kaa.config import conf
6
6
  from kotonebot.kaa.game_ui.scrollable import Scrollable
7
7
  from ..actions.scenes import at_home, goto_home
8
8
  from kotonebot.backend.image import TemplateMatchResult
@@ -2,7 +2,7 @@
2
2
  import logging
3
3
 
4
4
  from kotonebot.kaa.tasks import R
5
- from kotonebot.kaa.common import conf
5
+ from kotonebot.kaa.config import conf
6
6
  from kotonebot.kaa.game_ui import toolbar_menu
7
7
  from ..actions.scenes import at_home, goto_home
8
8
  from kotonebot import task, device, image, sleep, ocr
@@ -3,7 +3,7 @@ import logging
3
3
  from gettext import gettext as _
4
4
 
5
5
  from kotonebot.kaa.tasks import R
6
- from kotonebot.kaa.common import conf
6
+ from kotonebot.kaa.config import conf
7
7
  from kotonebot.kaa.game_ui import WhiteFilter
8
8
  from ..actions.scenes import at_home, goto_home
9
9
  from ..actions.loading import wait_loading_end
@@ -4,7 +4,7 @@ import logging
4
4
  from kotonebot.kaa.tasks import R
5
5
 
6
6
  from kotonebot.primitives import Rect
7
- from kotonebot.kaa.common import conf, Priority
7
+ from kotonebot.kaa.config import conf, Priority
8
8
  from ..actions.loading import wait_loading_end
9
9
  from ..actions.scenes import at_home, goto_home
10
10
  from kotonebot import device, image, color, task, action, rect_expand, sleep
@@ -4,7 +4,7 @@ from typing import Optional
4
4
 
5
5
  from kotonebot.backend.loop import Loop
6
6
  from kotonebot.kaa.tasks import R
7
- from kotonebot.kaa.common import conf, DailyMoneyShopItems
7
+ from kotonebot.kaa.config import conf, DailyMoneyShopItems
8
8
  from kotonebot.primitives.geometry import Point
9
9
  from kotonebot.util import Countdown, cropped
10
10
  from kotonebot import task, device, image, action, sleep
@@ -2,7 +2,7 @@
2
2
  import logging
3
3
 
4
4
  from kotonebot.kaa.tasks import R
5
- from kotonebot.kaa.common import conf
5
+ from kotonebot.kaa.config import conf
6
6
  from kotonebot.kaa.game_ui.scrollable import Scrollable
7
7
  from ..actions.scenes import at_home, goto_home
8
8
  from kotonebot import task, device, image, sleep
@@ -7,7 +7,7 @@ import threading
7
7
 
8
8
  from kotonebot.ui import user
9
9
  from ..kaa_context import instance
10
- from kotonebot.kaa.common import Priority, conf
10
+ from kotonebot.kaa.config import Priority, conf
11
11
  from kotonebot import task, action, config, device
12
12
 
13
13
  logger = logging.getLogger(__name__)
@@ -7,7 +7,7 @@ import numpy as np
7
7
  from cv2.typing import MatLike
8
8
 
9
9
  from kotonebot.kaa.tasks import R
10
- from kotonebot.kaa.common import conf
10
+ from kotonebot.kaa.config import conf
11
11
  from kotonebot.kaa.game_ui import dialog
12
12
  from kotonebot.kaa.util.trace import trace
13
13
  from kotonebot.primitives import RectTuple, Rect
@@ -9,11 +9,12 @@ from kotonebot import (
9
9
  sleep,
10
10
  Interval,
11
11
  )
12
+ from kotonebot.kaa.config.schema import produce_solution
12
13
  from kotonebot.primitives import Rect
13
14
  from kotonebot.kaa.tasks import R
14
15
  from .p_drink import acquire_p_drink
15
16
  from kotonebot.util import measure_time
16
- from kotonebot.kaa.common import conf
17
+ from kotonebot.kaa.config import conf
17
18
  from kotonebot.kaa.tasks.actions.loading import loading
18
19
  from kotonebot.kaa.game_ui import CommuEventButtonUI, dialog, badge
19
20
  from kotonebot.kaa.tasks.actions.commu import handle_unread_commu
@@ -188,7 +189,7 @@ def fast_acquisitions() -> AcquisitionType | None:
188
189
 
189
190
  # 跳过未读交流
190
191
  logger.debug("Check skip commu...")
191
- if conf().produce.skip_commu and handle_unread_commu(img):
192
+ if produce_solution().data.skip_commu and handle_unread_commu(img):
192
193
  return "SkipCommu"
193
194
  device.click(10, 10)
194
195
 
@@ -2,6 +2,7 @@ import logging
2
2
  from typing_extensions import assert_never
3
3
  from typing import Literal
4
4
 
5
+ from kotonebot.kaa.config.schema import produce_solution
5
6
  from kotonebot.kaa.game_ui.schedule import Schedule
6
7
  from kotonebot.kaa.tasks import R
7
8
  from ..actions import loading
@@ -12,7 +13,8 @@ from ..actions.commu import handle_unread_commu
12
13
  from kotonebot.errors import UnrecoverableError
13
14
  from kotonebot.util import Countdown, Interval, cropped
14
15
  from kotonebot.backend.dispatch import DispatcherContext
15
- from kotonebot.kaa.common import ProduceAction, RecommendCardDetectionMode, conf
16
+ from kotonebot.kaa.config import ProduceAction, RecommendCardDetectionMode
17
+ from kotonebot.kaa.config import conf
16
18
  from ..produce.common import until_acquisition_clear, commu_event, fast_acquisitions
17
19
  from kotonebot import ocr, device, contains, image, regex, action, sleep, wait
18
20
  from ..produce.non_lesson_actions import (
@@ -192,7 +194,7 @@ def practice():
192
194
 
193
195
  def threshold_predicate(card_count: int, result: CardDetectResult):
194
196
  border_scores = (result.left_score, result.right_score, result.top_score, result.bottom_score)
195
- is_strict_mode = conf().produce.recommend_card_detection_mode == RecommendCardDetectionMode.STRICT
197
+ is_strict_mode = produce_solution().data.recommend_card_detection_mode == RecommendCardDetectionMode.STRICT
196
198
  if is_strict_mode:
197
199
  return (
198
200
  result.score >= 0.05
@@ -224,7 +226,7 @@ def exam(type: Literal['mid', 'final']):
224
226
  logger.info("Exam started")
225
227
 
226
228
  def threshold_predicate(card_count: int, result: CardDetectResult):
227
- is_strict_mode = conf().produce.recommend_card_detection_mode == RecommendCardDetectionMode.STRICT
229
+ is_strict_mode = produce_solution().data.recommend_card_detection_mode == RecommendCardDetectionMode.STRICT
228
230
  total = lambda t: result.score >= t
229
231
  def borders(t):
230
232
  # 卡片数量小于三时无遮挡,以及最后一张卡片也总是无遮挡
@@ -422,7 +424,7 @@ def produce_end():
422
424
  # [screenshots/produce_end/end_follow.png]
423
425
  elif image.find(R.InPurodyuusu.ButtonCancel):
424
426
  logger.info("Follow producer dialog found. Click to close.")
425
- if conf().produce.follow_producer:
427
+ if produce_solution().data.follow_producer:
426
428
  logger.info("Follow producer")
427
429
  device.click(image.expect_wait(R.InPurodyuusu.ButtonFollowNoIcon))
428
430
  else:
@@ -506,12 +508,12 @@ def week_normal(week_first: bool = False):
506
508
  action: ProduceAction | None = None
507
509
  # SP 课程
508
510
  if (
509
- conf().produce.prefer_lesson_ap
511
+ produce_solution().data.prefer_lesson_ap
510
512
  and handle_sp_lesson()
511
513
  ):
512
514
  action = ProduceAction.DANCE
513
515
  else:
514
- actions = conf().produce.actions_order
516
+ actions = produce_solution().data.actions_order
515
517
  for action in actions:
516
518
  logger.debug("Checking action: %s", action)
517
519
  if action := handle_action(action):
@@ -539,7 +541,7 @@ def week_normal(week_first: bool = False):
539
541
  def week_final_lesson():
540
542
  until_action_scene()
541
543
  action: ProduceAction | None = None
542
- actions = conf().produce.actions_order
544
+ actions = produce_solution().data.actions_order
543
545
  for action in actions:
544
546
  logger.debug("Checking action: %s", action)
545
547
  if action := handle_action(action, True):
@@ -5,10 +5,11 @@
5
5
  """
6
6
  from logging import getLogger
7
7
 
8
+ from kotonebot.kaa.config.schema import produce_solution
8
9
  from kotonebot.kaa.game_ui import dialog
9
10
 
10
11
  from kotonebot.kaa.tasks import R
11
- from kotonebot.kaa.common import conf
12
+ from kotonebot.kaa.config import conf
12
13
  from ..produce.common import fast_acquisitions
13
14
  from kotonebot.kaa.game_ui.commu_event_buttons import CommuEventButtonUI
14
15
  from kotonebot.util import Countdown, Interval
@@ -66,7 +67,7 @@ def enter_study():
66
67
  R.InPurodyuusu.TextSelfStudyVocal
67
68
  ]):
68
69
  logger.info("授業 type: Self study.")
69
- target = conf().produce.self_study_lesson
70
+ target = produce_solution().data.self_study_lesson
70
71
  if target == 'dance':
71
72
  logger.debug("Clicking on lesson dance.")
72
73
  device.double_click(image.expect(R.InPurodyuusu.TextSelfStudyDance))
@@ -1,11 +1,11 @@
1
1
  import logging
2
- from itertools import cycle
3
2
  from typing import Optional, Literal
4
3
  from typing_extensions import assert_never
5
4
 
5
+ from kotonebot.kaa.config.schema import produce_solution
6
6
  from kotonebot.ui import user
7
7
  from kotonebot.kaa.tasks import R
8
- from kotonebot.kaa.common import conf
8
+ from kotonebot.kaa.config import conf
9
9
  from kotonebot.kaa.game_ui import dialog
10
10
  from ..actions.scenes import at_home, goto_home
11
11
  from kotonebot.backend.loop import Loop, StatedLoop
@@ -150,7 +150,7 @@ def resume_produce():
150
150
  max_retries = 5
151
151
  current_week = None
152
152
  while retry_count < max_retries:
153
- week_text = ocr.ocr(R.Produce.BoxResumeDialogWeeks).squash().regex(r'\d+/\d+')
153
+ week_text = ocr.ocr(R.Produce.BoxResumeDialogWeeks, lang='en').squash().regex(r'\d+/\d+')
154
154
  if week_text:
155
155
  weeks = week_text[0].split('/')
156
156
  logger.info(f'Current week: {weeks[0]}/{weeks[1]}')
@@ -191,7 +191,7 @@ def do_produce(
191
191
 
192
192
  前置条件:可导航至首页的任意页面\n
193
193
  结束状态:游戏首页\n
194
-
194
+
195
195
  :param memory_set_index: 回忆编成编号。
196
196
  :param idol_skin_id: 要培育的偶像。如果为 None,则使用配置文件中的偶像。
197
197
  :param mode: 培育模式。
@@ -242,7 +242,7 @@ def do_produce(
242
242
  result = False
243
243
  break
244
244
  if not result:
245
- if conf().produce.use_ap_drink:
245
+ if produce_solution().data.use_ap_drink:
246
246
  # [kotonebot-resource\sprites\jp\produce\screenshot_no_enough_ap_1.png]
247
247
  # [kotonebot-resource\sprites\jp\produce\screenshot_no_enough_ap_2.png]
248
248
  # [kotonebot-resource\sprites\jp\produce\screenshot_no_enough_ap_3.png]
@@ -351,11 +351,11 @@ def do_produce(
351
351
 
352
352
  # 4. 选择道具 [screenshots/produce/screenshot_produce_start_4_end.png]
353
353
  # TODO: 如果道具不足,这里加入推送提醒
354
- if conf().produce.use_note_boost:
354
+ if produce_solution().data.use_note_boost:
355
355
  if image.find(R.Produce.CheckboxIconNoteBoost):
356
356
  device.click()
357
357
  sleep(0.1)
358
- if conf().produce.use_pt_boost:
358
+ if produce_solution().data.use_pt_boost:
359
359
  if image.find(R.Produce.CheckboxIconSupportPtBoost):
360
360
  device.click()
361
361
  sleep(0.1)
@@ -389,28 +389,33 @@ def produce():
389
389
  return
390
390
  import time
391
391
  count = conf().produce.produce_count
392
- idols = conf().produce.idols
393
- memory_sets = conf().produce.memory_sets
394
- mode = conf().produce.mode
392
+ idol = produce_solution().data.idol
393
+ memory_set = produce_solution().data.memory_set
394
+ support_card_set = produce_solution().data.support_card_set
395
+ mode = produce_solution().data.mode
395
396
  # 数据验证
396
397
  if count < 0:
397
398
  user.warning('配置有误', '培育次数不能小于 0。将跳过本次培育。')
398
399
  return
400
+ if idol is None:
401
+ user.warning('配置有误', '未设置要培育的偶像。将跳过本次培育。')
402
+ return
399
403
 
400
- idol_iterator = cycle(idols)
401
- memory_set_iterator = cycle(memory_sets)
402
404
  for i in range(count):
403
405
  start_time = time.time()
404
- idol = next(idol_iterator)
405
- if conf().produce.auto_set_memory:
406
- memory_set = None
406
+ if produce_solution().data.auto_set_memory:
407
+ memory_set_to_use = None
408
+ else:
409
+ memory_set_to_use = memory_set
410
+ if produce_solution().data.auto_set_support_card:
411
+ support_card_set_to_use = None
407
412
  else:
408
- memory_set = next(memory_set_iterator, None)
413
+ support_card_set_to_use = support_card_set
409
414
  logger.info(
410
415
  f'Produce start with: '
411
- f'idol: {idol}, mode: {mode}, memory_set: #{memory_set}'
416
+ f'idol: {idol}, mode: {mode}, memory_set: #{memory_set_to_use}, support_card_set: #{support_card_set_to_use}'
412
417
  )
413
- if not do_produce(idol, mode, memory_set):
418
+ if not do_produce(idol, mode, memory_set_to_use):
414
419
  user.info('AP 不足', f'由于 AP 不足,跳过了 {count - i} 次培育。')
415
420
  logger.info('%d produce(s) skipped because of insufficient AP.', count - i)
416
421
  break
@@ -427,11 +432,11 @@ if __name__ == '__main__':
427
432
  from kotonebot.kaa.main import Kaa
428
433
 
429
434
  conf().produce.enabled = True
430
- conf().produce.mode = 'pro'
431
435
  conf().produce.produce_count = 1
432
- # conf().produce.idols = ['i_card-skin-hski-3-002']
433
- conf().produce.memory_sets = [1]
434
- conf().produce.auto_set_memory = False
436
+ produce_solution().data.mode = 'pro'
437
+ # produce_solution().data.idol = 'i_card-skin-hski-3-002'
438
+ produce_solution().data.memory_set = 1
439
+ produce_solution().data.auto_set_memory = False
435
440
  # do_produce(PIdol.月村手毬_初声, 'pro', 5)
436
441
  produce()
437
442
  # a()
@@ -5,7 +5,7 @@ import ctypes
5
5
  import logging
6
6
 
7
7
  from kotonebot.kaa.tasks import R
8
- from kotonebot.kaa.common import Priority, conf
8
+ from kotonebot.kaa.config import Priority, conf
9
9
  from .actions.loading import loading
10
10
  from kotonebot.util import Countdown, Interval
11
11
  from .actions.scenes import at_home, goto_home
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ksaa
3
- Version: 2025.7.7.0
3
+ Version: 2025.7.9.0
4
4
  Summary: Kotones Auto Assistant(kaa) is a script for game 'Gakuen Idol M@ster' that automates the dailies and produces.
5
5
  Requires-Python: ~=3.10
6
6
  Description-Content-Type: text/markdown