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
@@ -0,0 +1,236 @@
1
+ from typing import TypeVar, Literal, Sequence
2
+ from pydantic import BaseModel, ConfigDict
3
+
4
+ from kotonebot import config
5
+ from kotonebot.kaa.config.produce import ProduceSolution, ProduceSolutionManager
6
+ from .const import (
7
+ ConfigEnum,
8
+ Priority,
9
+ APShopItems,
10
+ DailyMoneyShopItems,
11
+ )
12
+
13
+ T = TypeVar('T')
14
+
15
+ class ConfigBaseModel(BaseModel):
16
+ model_config = ConfigDict(use_attribute_docstrings=True)
17
+
18
+ class PurchaseConfig(ConfigBaseModel):
19
+ enabled: bool = False
20
+ """是否启用商店购买"""
21
+ money_enabled: bool = False
22
+ """是否启用金币购买"""
23
+ money_items: list[DailyMoneyShopItems] = []
24
+ """金币商店要购买的物品"""
25
+ money_refresh: bool = True
26
+ """
27
+ 是否使用每日一次免费刷新金币商店。
28
+ """
29
+ ap_enabled: bool = False
30
+ """是否启用AP购买"""
31
+ ap_items: Sequence[Literal[0, 1, 2, 3]] = []
32
+ """AP商店要购买的物品"""
33
+
34
+
35
+ class ActivityFundsConfig(ConfigBaseModel):
36
+ enabled: bool = False
37
+ """是否启用收取活动费"""
38
+
39
+
40
+ class PresentsConfig(ConfigBaseModel):
41
+ enabled: bool = False
42
+ """是否启用收取礼物"""
43
+
44
+
45
+ class AssignmentConfig(ConfigBaseModel):
46
+ enabled: bool = False
47
+ """是否启用工作"""
48
+
49
+ mini_live_reassign_enabled: bool = False
50
+ """是否启用重新分配 MiniLive"""
51
+ mini_live_duration: Literal[4, 6, 12] = 12
52
+ """MiniLive 工作时长"""
53
+
54
+ online_live_reassign_enabled: bool = False
55
+ """是否启用重新分配 OnlineLive"""
56
+ online_live_duration: Literal[4, 6, 12] = 12
57
+ """OnlineLive 工作时长"""
58
+
59
+
60
+ class ContestConfig(ConfigBaseModel):
61
+ enabled: bool = False
62
+ """是否启用竞赛"""
63
+
64
+ select_which_contestant: Literal[1, 2, 3] = 1
65
+ """选择第几个挑战者"""
66
+
67
+
68
+
69
+ class ProduceConfig(ConfigBaseModel):
70
+ enabled: bool = False
71
+ """是否启用培育"""
72
+ selected_solution_id: str | None = None
73
+ """选中的培育方案ID"""
74
+ produce_count: int = 1
75
+ """培育的次数。"""
76
+
77
+ class MissionRewardConfig(ConfigBaseModel):
78
+ enabled: bool = False
79
+ """是否启用领取任务奖励"""
80
+
81
+ class ClubRewardConfig(ConfigBaseModel):
82
+ enabled: bool = False
83
+ """是否启用领取社团奖励"""
84
+
85
+ selected_note: DailyMoneyShopItems = DailyMoneyShopItems.AnomalyNoteVisual
86
+ """想在社团奖励中获取到的笔记"""
87
+
88
+ class UpgradeSupportCardConfig(ConfigBaseModel):
89
+ enabled: bool = False
90
+ """是否启用支援卡升级"""
91
+
92
+ class CapsuleToysConfig(ConfigBaseModel):
93
+ enabled: bool = False
94
+ """是否启用扭蛋机"""
95
+
96
+ friend_capsule_toys_count: int = 0
97
+ """好友扭蛋机次数"""
98
+
99
+ sense_capsule_toys_count: int = 0
100
+ """感性扭蛋机次数"""
101
+
102
+ logic_capsule_toys_count: int = 0
103
+ """理性扭蛋机次数"""
104
+
105
+ anomaly_capsule_toys_count: int = 0
106
+ """非凡扭蛋机次数"""
107
+
108
+ class TraceConfig(ConfigBaseModel):
109
+ recommend_card_detection: bool = False
110
+ """跟踪推荐卡检测"""
111
+
112
+ class StartGameConfig(ConfigBaseModel):
113
+ enabled: bool = True
114
+ """是否启用自动启动游戏。默认为True"""
115
+
116
+ start_through_kuyo: bool = False
117
+ """是否通过Kuyo来启动游戏"""
118
+
119
+ game_package_name: str = 'com.bandainamcoent.idolmaster_gakuen'
120
+ """游戏包名"""
121
+
122
+ kuyo_package_name: str = 'org.kuyo.game'
123
+ """Kuyo包名"""
124
+
125
+ disable_gakumas_localify: bool = False
126
+ """
127
+ 自动检测并禁用 Gakumas Localify 汉化插件。
128
+
129
+ (目前仅对 DMM 版有效。)
130
+ """
131
+
132
+ dmm_game_path: str | None = None
133
+ """
134
+ DMM 版游戏路径。若不填写,会自动检测。
135
+
136
+ 例:`F:\\Games\\gakumas\\gakumas.exe`
137
+ """
138
+
139
+ class EndGameConfig(ConfigBaseModel):
140
+ exit_kaa: bool = False
141
+ """退出 kaa"""
142
+ kill_game: bool = False
143
+ """关闭游戏"""
144
+ kill_dmm: bool = False
145
+ """关闭 DMMGamePlayer"""
146
+ kill_emulator: bool = False
147
+ """关闭模拟器"""
148
+ shutdown: bool = False
149
+ """关闭系统"""
150
+ hibernate: bool = False
151
+ """休眠系统"""
152
+ restore_gakumas_localify: bool = False
153
+ """
154
+ 恢复 Gakumas Localify 汉化插件状态至启动前。通常与
155
+ `disable_gakumas_localify` 配对使用。
156
+
157
+ (目前仅对 DMM 版有效。)
158
+ """
159
+
160
+ class MiscConfig(ConfigBaseModel):
161
+ check_update: Literal['never', 'startup'] = 'startup'
162
+ """
163
+ 检查更新时机。
164
+
165
+ * never: 从不检查更新。
166
+ * startup: 启动时检查更新。
167
+ """
168
+ auto_install_update: bool = True
169
+ """
170
+ 是否自动安装更新。
171
+
172
+ 若启用,则每次自动检查更新时若有新版本会自动安装,否则只是会提示。
173
+ """
174
+ expose_to_lan: bool = False
175
+ """
176
+ 是否允许局域网访问 Web 界面。
177
+
178
+ 启用后,局域网内的其他设备可以通过本机 IP 地址访问 Web 界面。
179
+ """
180
+
181
+ class BaseConfig(ConfigBaseModel):
182
+ purchase: PurchaseConfig = PurchaseConfig()
183
+ """商店购买配置"""
184
+
185
+ activity_funds: ActivityFundsConfig = ActivityFundsConfig()
186
+ """活动费配置"""
187
+
188
+ presents: PresentsConfig = PresentsConfig()
189
+ """收取礼物配置"""
190
+
191
+ assignment: AssignmentConfig = AssignmentConfig()
192
+ """工作配置"""
193
+
194
+ contest: ContestConfig = ContestConfig()
195
+ """竞赛配置"""
196
+
197
+ produce: ProduceConfig = ProduceConfig()
198
+ """培育配置"""
199
+
200
+ mission_reward: MissionRewardConfig = MissionRewardConfig()
201
+ """领取任务奖励配置"""
202
+
203
+ club_reward: ClubRewardConfig = ClubRewardConfig()
204
+ """领取社团奖励配置"""
205
+
206
+ upgrade_support_card: UpgradeSupportCardConfig = UpgradeSupportCardConfig()
207
+ """支援卡升级配置"""
208
+
209
+ capsule_toys: CapsuleToysConfig = CapsuleToysConfig()
210
+ """扭蛋机配置"""
211
+
212
+ trace: TraceConfig = TraceConfig()
213
+ """跟踪配置"""
214
+
215
+ start_game: StartGameConfig = StartGameConfig()
216
+ """启动游戏配置"""
217
+
218
+ end_game: EndGameConfig = EndGameConfig()
219
+ """关闭游戏配置"""
220
+
221
+ misc: MiscConfig = MiscConfig()
222
+ """杂项配置"""
223
+
224
+
225
+ def conf() -> BaseConfig:
226
+ """获取当前配置数据"""
227
+ c = config.to(BaseConfig).current
228
+ return c.options
229
+
230
+ def produce_solution() -> ProduceSolution:
231
+ """获取当前培育方案"""
232
+ id = conf().produce.selected_solution_id
233
+ if id is None:
234
+ raise ValueError("No produce solution selected")
235
+ # TODO: 这里需要缓存,不能每次都从磁盘读取
236
+ return ProduceSolutionManager().read(id)
@@ -0,0 +1,63 @@
1
+ import os
2
+ import json
3
+ import logging
4
+ import shutil
5
+ from typing import Any
6
+
7
+ logger = logging.getLogger(__name__)
8
+
9
+ def upgrade_config() -> str | None:
10
+ """检查并升级 `config.json` 到最新版本。
11
+
12
+ 若配置已是最新版本,则返回 ``None``;否则返回合并后的迁移提示信息。
13
+ """
14
+ # 避免循环依赖,这里再进行本地导入
15
+ from .migrations import MIGRATION_REGISTRY, LATEST_VERSION # pylint: disable=import-outside-toplevel
16
+
17
+ logger.setLevel(logging.DEBUG)
18
+ print('1212121212')
19
+ config_path = "config.json"
20
+ if not os.path.exists(config_path):
21
+ logger.debug("config.json not found. Skip upgrade.")
22
+ return None
23
+
24
+ # 读取配置
25
+ with open(config_path, "r", encoding="utf-8") as f:
26
+ root: dict[str, Any] = json.load(f)
27
+
28
+ version: int = root.get("version", 1)
29
+ if version >= LATEST_VERSION:
30
+ logger.info("Config already at latest version (v%s).", version)
31
+ return None
32
+
33
+ logger.info("Start upgrading config: current v%s → target v%s", version, LATEST_VERSION)
34
+
35
+ messages: list[str] = []
36
+
37
+ # 循环依次升级
38
+ while version < LATEST_VERSION:
39
+ migrator = MIGRATION_REGISTRY.get(version)
40
+ if migrator is None:
41
+ logger.warning("No migrator registered for version v%s. Abort upgrade.", version)
42
+ break
43
+
44
+ # 备份文件
45
+ backup_path = f"config.v{version}.json"
46
+ shutil.copy(config_path, backup_path)
47
+ logger.info("Backup saved: %s", backup_path)
48
+
49
+ # 对每个 user_config 应用迁移
50
+ for user_cfg in root.get("user_configs", []):
51
+ msg = migrator(user_cfg)
52
+ if msg:
53
+ messages.append(f"v{version} → v{version+1}:\n{msg}")
54
+
55
+ # 更新版本号并写回
56
+ version += 1
57
+ root["version"] = version
58
+ with open(config_path, "w", encoding="utf-8") as f:
59
+ json.dump(root, f, ensure_ascii=False, indent=4)
60
+
61
+ logger.info("Config upgrade finished. Now at v%s", version)
62
+
63
+ return "\n---\n".join(messages) if messages else None
@@ -32,10 +32,13 @@ YELLOW_TARGET = (39, 81, 97)
32
32
  YELLOW_LOW = (30, 70, 90)
33
33
  YELLOW_HIGH = (45, 90, 100)
34
34
 
35
+ ORANGE_RANGE = ((14, 178, 229), (16, 229, 255))
36
+
35
37
  DEFAULT_COLORS = [
36
38
  (web2cv(PINK_LOW), web2cv(PINK_HIGH)),
37
39
  (web2cv(YELLOW_LOW), web2cv(YELLOW_HIGH)),
38
40
  (web2cv(BLUE_LOW), web2cv(BLUE_HIGH)),
41
+ ORANGE_RANGE
39
42
  ]
40
43
 
41
44
  # 参考图片:
@@ -6,7 +6,7 @@ from cv2.typing import MatLike
6
6
  from kotonebot.primitives import Rect
7
7
  from kotonebot import ocr, device, image, action
8
8
  from kotonebot.backend.core import HintBox
9
- from kotonebot.kaa.common import ProduceAction
9
+ from kotonebot.kaa.config import ProduceAction
10
10
  from kotonebot.kaa.tasks import R
11
11
 
12
12
  logger = logging.getLogger(__name__)