ksaa 2025.8.17.0__py3-none-any.whl → 2025.9b1__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 (181) hide show
  1. kotonebot/kaa/application/core/idle_mode.py +172 -0
  2. kotonebot/kaa/config/__init__.py +2 -0
  3. kotonebot/kaa/config/schema.py +11 -0
  4. kotonebot/kaa/main/gr.py +182 -51
  5. kotonebot/kaa/metadata.py +45 -0
  6. kotonebot/kaa/resources/__pycache__/__init__.cpython-310.pyc +0 -0
  7. kotonebot/kaa/resources/game.db +0 -0
  8. kotonebot/kaa/resources/game_ver.txt +0 -0
  9. kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-013_0.png +0 -0
  10. kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-013_1.png +0 -0
  11. kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-014_0.png +0 -0
  12. kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-015_0.png +0 -0
  13. kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-015_1.png +0 -0
  14. kotonebot/kaa/resources/idol_cards/i_card-skin-hmsz-3-002_0.png +0 -0
  15. kotonebot/kaa/resources/idol_cards/i_card-skin-hmsz-3-002_1.png +0 -0
  16. kotonebot/kaa/resources/idol_cards/i_card-skin-hmsz-3-012_0.png +0 -0
  17. kotonebot/kaa/resources/idol_cards/i_card-skin-hmsz-3-012_1.png +0 -0
  18. kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-014_0.png +0 -0
  19. kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-014_1.png +0 -0
  20. kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-014_0.png +0 -0
  21. kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-014_1.png +0 -0
  22. kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-014_0.png +0 -0
  23. kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-014_1.png +0 -0
  24. kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-008_0.png +0 -0
  25. kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-008_1.png +0 -0
  26. kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-013_0.png +0 -0
  27. kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-013_1.png +0 -0
  28. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-013_0.png +0 -0
  29. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-013_1.png +0 -0
  30. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-013_0.png +0 -0
  31. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-013_1.png +0 -0
  32. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-014_0.png +0 -0
  33. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-014_1.png +0 -0
  34. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-014_0.png +0 -0
  35. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-014_1.png +0 -0
  36. kotonebot/kaa/sprites/70898bf8-56c5-4f84-becb-629c9ab6a7da.png +0 -0
  37. kotonebot/kaa/sprites/9483fae5-3a72-4684-9403-d25d2c602d3d.png +0 -0
  38. kotonebot/kaa/sprites/9fd0753f-c607-4d49-82d1-40bda27e014f.png +0 -0
  39. kotonebot/kaa/sprites/a48324ae-7c1a-489e-b3c4-93d12267f88d.png +0 -0
  40. kotonebot/kaa/sprites/ce20a856-5629-4f8e-a8e1-d1bd14e18e4f.png +0 -0
  41. kotonebot/kaa/sprites/eaad330d-4e50-4b55-be2c-8da0f72764d9.png +0 -0
  42. kotonebot/kaa/tasks/R.py +135 -127
  43. kotonebot/kaa/tasks/actions/scenes.py +2 -0
  44. kotonebot/kaa/tasks/daily/purchase.py +2 -4
  45. kotonebot/kaa/tasks/produce/cards.py +3 -0
  46. kotonebot/kaa/tasks/produce/common.py +88 -0
  47. kotonebot/kaa/tasks/produce/in_purodyuusu.py +3 -3
  48. kotonebot/kaa/tasks/produce/non_lesson_actions.py +12 -6
  49. kotonebot/kaa/tasks/produce/produce.py +36 -55
  50. {ksaa-2025.8.17.0.dist-info → ksaa-2025.9b1.dist-info}/METADATA +92 -90
  51. {ksaa-2025.8.17.0.dist-info → ksaa-2025.9b1.dist-info}/RECORD +181 -150
  52. /kotonebot/kaa/sprites/{9bc1e849-e69d-4849-a849-45ea81829567.png → 002e7b92-11f4-487a-af55-334663e2b8cd.png} +0 -0
  53. /kotonebot/kaa/sprites/{3336498e-763b-4b43-9939-a271d2deb64f.png → 003c315c-418c-410e-ba45-290150097a25.png} +0 -0
  54. /kotonebot/kaa/sprites/{cd5ba3a7-96aa-4efc-97fc-b72f72d084d2.png → 01106370-2321-4696-a60e-dc76b565a097.png} +0 -0
  55. /kotonebot/kaa/sprites/{bd5190da-d3ed-462e-a573-b8f015cdef97.png → 0519d61c-0451-42a2-96ed-baa5ef026655.png} +0 -0
  56. /kotonebot/kaa/sprites/{0ef0615f-f293-4a4e-93ac-985b3a17c8d7.png → 0c2a1e9f-85be-4fec-a8ae-4e417c58d5a5.png} +0 -0
  57. /kotonebot/kaa/sprites/{0b947c81-0ab1-40a8-8c26-26258be572c7.png → 0d1ecf0b-b090-42b2-b895-cb1f5b415af8.png} +0 -0
  58. /kotonebot/kaa/sprites/{be2d7e60-56d2-4891-aae9-b5d2a65a8d03.png → 0d39671a-cfa3-4832-93e8-6ab61cece799.png} +0 -0
  59. /kotonebot/kaa/sprites/{c654428b-4f16-4257-800f-da627ddb7595.png → 0ffd0b92-78f6-4661-a2c3-3c337b75d3bb.png} +0 -0
  60. /kotonebot/kaa/sprites/{1e540586-c381-4aed-b689-e9cd2708ae85.png → 105df024-ece9-4c9c-9479-9f7423f4abec.png} +0 -0
  61. /kotonebot/kaa/sprites/{0da004d8-2cc5-43ab-9ac1-94d4f74dd37d.png → 112f47b8-e71f-426f-9081-0c8efb6ced72.png} +0 -0
  62. /kotonebot/kaa/sprites/{e850b360-da95-4498-ab3e-177e0d57e189.png → 11c5034e-d258-422d-850c-a4495b346778.png} +0 -0
  63. /kotonebot/kaa/sprites/{896ed7b5-72c8-4c1d-90ff-eb7f12876f9c.png → 12d59cc0-cef6-472d-b424-edaae52463ca.png} +0 -0
  64. /kotonebot/kaa/sprites/{6b4f820d-8b40-4ac1-9322-550860cbda08.png → 13338d14-2b0d-4630-a5d2-dc273f62524e.png} +0 -0
  65. /kotonebot/kaa/sprites/{4c2fe337-73f6-4ed4-84ae-f17bf4787645.png → 13a5d0e7-776e-40c2-8a52-dd3e016913b4.png} +0 -0
  66. /kotonebot/kaa/sprites/{d559328f-9b26-4ea1-8f96-f432abf0214d.png → 156cb3bd-0523-4a76-8747-8d4ce23fed7b.png} +0 -0
  67. /kotonebot/kaa/sprites/{da351a32-c51f-4746-8f89-778343772d08.png → 16d914f3-c3be-479e-932a-4c336c08b94e.png} +0 -0
  68. /kotonebot/kaa/sprites/{ed2f8cd2-be82-4d48-acd0-c48cf8bdd800.png → 1b39e16c-d8e2-4f4c-bc6d-a4511184f8af.png} +0 -0
  69. /kotonebot/kaa/sprites/{f11ca963-fc05-4486-acf7-aa8f7415e6b5.png → 1b82310e-8422-4be6-b31b-bc7693def4e4.png} +0 -0
  70. /kotonebot/kaa/sprites/{f61e28cd-9eaa-4d3c-b25d-8bfdaecb1255.png → 1d25aa70-8137-4c63-8dcf-a5b5a8f950e6.png} +0 -0
  71. /kotonebot/kaa/sprites/{a5e11b99-d89e-47a2-ae67-4e0a04bfc022.png → 1e324ce8-b56f-45d5-9476-713dabfdecf9.png} +0 -0
  72. /kotonebot/kaa/sprites/{a7f49544-2aaf-4f5c-a217-7203bfa87758.png → 22bda7ef-ad0d-4020-a667-6ae77b4805ca.png} +0 -0
  73. /kotonebot/kaa/sprites/{7e00779b-de42-4406-88f9-07d93e47f104.png → 23a39277-a6ac-4a49-9c6a-1fca1a3a4d9b.png} +0 -0
  74. /kotonebot/kaa/sprites/{1339693d-6e77-4058-921a-9079c8eb5a9a.png → 23b37aad-1de3-43e2-84e6-78f6f0f28fba.png} +0 -0
  75. /kotonebot/kaa/sprites/{d3c31276-8395-4aa3-ae1a-4c50a24e8574.png → 23f8844e-9272-4a5c-badf-a30676fd22da.png} +0 -0
  76. /kotonebot/kaa/sprites/{394c60cc-1caa-4a29-a387-798316d48d4a.png → 24458a04-ca4d-4330-9dd6-f074feac9a17.png} +0 -0
  77. /kotonebot/kaa/sprites/{a914c9d7-3a19-4d9c-940e-579bf3f7fa79.png → 246f9799-5367-4fb4-877d-821fb4acad71.png} +0 -0
  78. /kotonebot/kaa/sprites/{9ec515d0-c177-43fa-bbf3-ea2a57080969.png → 24d55c2b-dfe8-4a80-9f39-94045478f5a5.png} +0 -0
  79. /kotonebot/kaa/sprites/{21f2fdd8-c6fe-44fe-bcc6-efa8bc7f895a.png → 26262f2d-e12b-4992-8c14-15679cae4298.png} +0 -0
  80. /kotonebot/kaa/sprites/{0de1fa4d-3621-4671-9e1f-b8ed1e767adc.png → 2704de68-4349-4695-8102-4dcd93fe82c7.png} +0 -0
  81. /kotonebot/kaa/sprites/{3303b048-552d-4794-aa57-180b43187d5a.png → 279ab0e2-1601-4bfb-8d27-4019fc4dcd3d.png} +0 -0
  82. /kotonebot/kaa/sprites/{b7283194-0e6d-4ac1-84e0-c2062af8eba8.png → 2ad65f0c-3b9c-46ad-808e-11c6d6db7417.png} +0 -0
  83. /kotonebot/kaa/sprites/{1777dfb5-2793-4037-9da7-f789cf65896e.png → 2b3a82fd-79b3-400c-988a-248a7b277542.png} +0 -0
  84. /kotonebot/kaa/sprites/{cce54a7c-bdd5-4063-8a40-e01709e69893.png → 37d24544-1791-474d-8f74-b1dbe0dd3c6b.png} +0 -0
  85. /kotonebot/kaa/sprites/{6224165f-3fa9-483f-b4fb-73c44e8009e4.png → 3868b12d-8d93-4754-91bd-797680d24e22.png} +0 -0
  86. /kotonebot/kaa/sprites/{9aee770e-1746-4076-b3c4-5da218321614.png → 3de9bd37-90ef-45ec-88c0-03c4fd50fb51.png} +0 -0
  87. /kotonebot/kaa/sprites/{850d5405-2103-4a2f-9e00-d5c5f43ce9a7.png → 46198a1d-888e-4a12-827e-51cdd4fc30a2.png} +0 -0
  88. /kotonebot/kaa/sprites/{42092d5b-d11d-4651-9cd5-49302f52d50b.png → 49587e50-e978-461f-b49c-7f92347923f5.png} +0 -0
  89. /kotonebot/kaa/sprites/{8e90dc5b-d79a-4133-b722-edbb14f5f0db.png → 4af83157-f237-4072-a732-1e59814485e7.png} +0 -0
  90. /kotonebot/kaa/sprites/{255b0e7a-c47a-4f70-9c92-5e3fa06d4d4c.png → 4b595d09-a5ed-47d6-9c7b-e471792db801.png} +0 -0
  91. /kotonebot/kaa/sprites/{15ce2944-3d27-4073-b969-2ec8fc98ceb4.png → 4e284d43-9d58-4afa-be66-b61825ef2be3.png} +0 -0
  92. /kotonebot/kaa/sprites/{aa55089d-7b80-4763-a226-cde10e56f8a5.png → 50f138f4-7500-42c1-8121-2f03703d8f8f.png} +0 -0
  93. /kotonebot/kaa/sprites/{e8935f50-3109-4d98-9783-86738763a431.png → 53d082f9-9cac-4ca0-b166-3a3599c4f757.png} +0 -0
  94. /kotonebot/kaa/sprites/{a6a23fad-cc30-43cd-b869-d2fad70d32ab.png → 5479a383-3e75-4082-a118-fdae784228f4.png} +0 -0
  95. /kotonebot/kaa/sprites/{64d7e162-a761-458b-a0c6-083658141032.png → 564e9739-a90d-4c17-9d29-b3edb6aef1e9.png} +0 -0
  96. /kotonebot/kaa/sprites/{14488bad-1e16-47b8-9870-f2e18c6b87ee.png → 5aac4900-ccd2-4a72-9135-0804fe14e6e2.png} +0 -0
  97. /kotonebot/kaa/sprites/{a885914f-a305-4af3-b2a5-991fdf0101f6.png → 5c926d27-63c7-466f-9e34-65144153e0d2.png} +0 -0
  98. /kotonebot/kaa/sprites/{e4c40e7a-f67c-45d6-9775-8389bcff0b67.png → 5d51ee71-a2fb-414a-ab48-c5d3c1a3b945.png} +0 -0
  99. /kotonebot/kaa/sprites/{ef46ae80-8c34-4948-9076-b0536805e7dc.png → 62390db3-c5bc-4868-bfb3-958acceff9cd.png} +0 -0
  100. /kotonebot/kaa/sprites/{720cfc0e-74a2-4239-bc08-ea9927871cd0.png → 634b1421-7f65-452c-a4e2-e40a5028938a.png} +0 -0
  101. /kotonebot/kaa/sprites/{130ee78a-c201-4fa0-bac5-7be0b842312d.png → 6588da9e-a9b5-4313-9f67-e03f213f3fa4.png} +0 -0
  102. /kotonebot/kaa/sprites/{2c43b51a-7ca5-4401-a05f-d3b3de17c2d3.png → 66eee7a5-3d0e-430f-850b-7fff14b3671f.png} +0 -0
  103. /kotonebot/kaa/sprites/{54a7603e-fd84-4d7f-99ef-f95d3695aa42.png → 67176e48-eaa5-46dd-bbaf-85b1b324ba48.png} +0 -0
  104. /kotonebot/kaa/sprites/{079cdbed-7171-42e3-8298-9d1e180982ec.png → 6774c674-5100-4422-a82b-deb9bd5d49ee.png} +0 -0
  105. /kotonebot/kaa/sprites/{73eec0a3-e3ba-40c8-b163-321a5b7feb81.png → 6e9ef52c-937f-47f1-9687-899a528d7599.png} +0 -0
  106. /kotonebot/kaa/sprites/{1f8cca6a-ae0a-44c9-a267-989ae508320a.png → 704bf40a-4125-4260-9dd7-fa8ac13f00df.png} +0 -0
  107. /kotonebot/kaa/sprites/{07c5517b-38f7-44e6-8506-84317ba0fb86.png → 71bbe862-b9f7-47ab-b4f1-f0b87732bd39.png} +0 -0
  108. /kotonebot/kaa/sprites/{ca850faa-154e-4170-9446-91dd325e14af.png → 7516da41-7cbf-4c18-8630-3baecc225764.png} +0 -0
  109. /kotonebot/kaa/sprites/{d9432d63-1aef-43a7-8642-d10f3c15b092.png → 75f0339c-9acf-4971-a3c2-e302f56b1f93.png} +0 -0
  110. /kotonebot/kaa/sprites/{fbe45406-81bd-4298-ab4f-ed7346c25eb8.png → 76a65fb7-4429-4288-a164-bd121974ee6b.png} +0 -0
  111. /kotonebot/kaa/sprites/{82eab6fc-1968-42a4-bb43-d9cee984b33d.png → 783cbcad-eefc-4a04-910e-9ff4288d3c18.png} +0 -0
  112. /kotonebot/kaa/sprites/{d5a25a5f-8bd0-4f09-aec7-fda24eaf795e.png → 78a12e3b-ac32-4e96-8998-30f92318a36b.png} +0 -0
  113. /kotonebot/kaa/sprites/{71293cd1-83de-4f15-9608-1d31678e3566.png → 7cddb93a-175c-4875-a2fb-136cdfc365a7.png} +0 -0
  114. /kotonebot/kaa/sprites/{54e4f9a3-3ae6-4bf4-85b1-680889835137.png → 7d817b98-53ff-491c-b608-b07a0c143009.png} +0 -0
  115. /kotonebot/kaa/sprites/{214fad37-3e64-4786-8cfa-b48dd49ddbe4.png → 8034f626-ae01-42c0-8f73-a3d1c9aaff5c.png} +0 -0
  116. /kotonebot/kaa/sprites/{4c07fc6b-662a-4216-b1e6-6036fa6f717d.png → 824c9efd-21ea-4e26-a1fa-9e909d8b98d6.png} +0 -0
  117. /kotonebot/kaa/sprites/{a0fc1501-162d-49c6-824c-03e028d8fed7.png → 835e3ad1-8f73-4e2e-bdd5-9a5fb866858f.png} +0 -0
  118. /kotonebot/kaa/sprites/{ed822aca-dde6-4235-8776-0c47884c4a9a.png → 84795df2-e6d9-40fb-aef5-98fbf9c17399.png} +0 -0
  119. /kotonebot/kaa/sprites/{da7ef120-103c-4d5f-b95c-2bcd29757d3c.png → 848c8b04-c953-473d-94b1-2a2d5cdbd9c4.png} +0 -0
  120. /kotonebot/kaa/sprites/{0b27cdd2-490b-4a6a-ae0d-788ac1601dcc.png → 8498ac20-4ec2-474b-961f-cbf488da9a23.png} +0 -0
  121. /kotonebot/kaa/sprites/{1135ed8d-4e1c-4896-9d6d-5c2ba3d29761.png → 85f1cf4f-7d07-403a-917b-02b273680c21.png} +0 -0
  122. /kotonebot/kaa/sprites/{fb2694c2-8f0e-4ec3-9d76-087f085f2e55.png → 86db7d47-f634-4be4-b9e2-371e7868aded.png} +0 -0
  123. /kotonebot/kaa/sprites/{6ede6499-0efe-4ad2-83c7-5fd8a512c52e.png → 88d89e04-2242-4ed7-be23-edd6535121ac.png} +0 -0
  124. /kotonebot/kaa/sprites/{b22260e3-22c6-4c80-b986-f4fd8db22ddc.png → 8cb9d744-6b49-452b-b0b6-e441446050ef.png} +0 -0
  125. /kotonebot/kaa/sprites/{b176f60c-94ba-46e3-b562-7fc86b25c17f.png → 8df4515c-ff60-432c-a624-ae3658bf7e0c.png} +0 -0
  126. /kotonebot/kaa/sprites/{1d5835f8-593c-4ec4-a360-81fce8d2f959.png → 8e6b9237-f94a-4e21-9b2c-45e3d4833b6d.png} +0 -0
  127. /kotonebot/kaa/sprites/{ed56bfc1-d3c5-4bc3-a910-f861cfb2f379.png → 8e7b53fd-d962-43b7-a203-3d480c649c83.png} +0 -0
  128. /kotonebot/kaa/sprites/{6b33fe3c-28ff-49ad-ba24-7279c8e9ec19.png → 8ed3f006-facb-4ba0-9034-24a3a7729012.png} +0 -0
  129. /kotonebot/kaa/sprites/{918db28b-0d43-4056-a506-3279f2b724c8.png → 91e2c2d3-b629-4c49-97d5-ed99dada3243.png} +0 -0
  130. /kotonebot/kaa/sprites/{2ac9bca3-aad6-4d19-a4b7-4d7197d95fba.png → 92c1a9ba-994b-4635-b1b6-1fa157f227f6.png} +0 -0
  131. /kotonebot/kaa/sprites/{757d08d7-c7a1-430a-8938-edd824ed7117.png → 981e63c5-d615-44dd-9ad6-60f6b415cdaf.png} +0 -0
  132. /kotonebot/kaa/sprites/{99967c02-b5cf-43ba-9ca6-23e2781b25d9.png → 98a8e860-39cf-416c-b435-64a33579c6e8.png} +0 -0
  133. /kotonebot/kaa/sprites/{350736d7-0774-4a48-973c-d9373fc68ea3.png → 9932dfd8-7c97-47dd-b6bb-e8c8d593f762.png} +0 -0
  134. /kotonebot/kaa/sprites/{88476c65-0056-4ae4-9c9e-3ff1bae964e8.png → 9a275932-f760-4373-ab27-86c5caf19136.png} +0 -0
  135. /kotonebot/kaa/sprites/{07d78d3e-4e79-459e-9c41-43f4a618f9e9.png → 9a7f06a5-448b-4410-84fa-0a4c938620f7.png} +0 -0
  136. /kotonebot/kaa/sprites/{f9bba6f1-6237-43bf-85b1-f6250a64a5d6.png → 9cdd7af5-0e25-4226-8c7b-93c8c633c27b.png} +0 -0
  137. /kotonebot/kaa/sprites/{0899e636-b767-45e6-ab63-258d19d3f806.png → a0ddc404-a653-4d76-842f-faf7f93851ed.png} +0 -0
  138. /kotonebot/kaa/sprites/{74c8b69c-bceb-438f-a4a4-49e3abd7fa46.png → a1087827-1065-4f35-b04f-854ddf2d7e70.png} +0 -0
  139. /kotonebot/kaa/sprites/{1ae6b793-d85f-4b06-ba9f-bdb7fbed26fc.png → a3f07286-a699-4f5c-9912-835b3781b4f7.png} +0 -0
  140. /kotonebot/kaa/sprites/{93f74a70-acd1-4453-8254-07a797839b5f.png → a4aabbbe-6400-4bcb-a95f-32a7d611bf5b.png} +0 -0
  141. /kotonebot/kaa/sprites/{b3e5704b-63c9-4226-9e49-69c680627b61.png → a4b50bf5-7dfe-4bbb-8bd7-528c9147b71e.png} +0 -0
  142. /kotonebot/kaa/sprites/{b3debf96-a90b-4de7-b19e-83c2d82075ee.png → a4c42000-2421-4b02-b83e-60e1397304b0.png} +0 -0
  143. /kotonebot/kaa/sprites/{b66ed448-356e-44f9-ad45-40473d47ee24.png → a8aacbc9-1238-414c-b1e6-5ea1a01407c2.png} +0 -0
  144. /kotonebot/kaa/sprites/{141b5f13-489d-4271-ac49-4d0bd40bf8fc.png → a99307de-c12f-4cf5-921b-b80bf03bbac3.png} +0 -0
  145. /kotonebot/kaa/sprites/{aed0fd9a-0e59-4ead-b6a2-497b94f0eb16.png → ac02de52-42fa-4767-81f8-97fbac3bd8a0.png} +0 -0
  146. /kotonebot/kaa/sprites/{d597a32e-5ccb-4550-ab18-1905123c22d4.png → aee9d67f-d6be-4cf5-9c30-331f6d5f0f84.png} +0 -0
  147. /kotonebot/kaa/sprites/{07578d0c-15d4-42a2-9db1-a1c0c11b55c1.png → b45b4340-65ce-49df-a265-9f3cd876fced.png} +0 -0
  148. /kotonebot/kaa/sprites/{4183bf72-4ca7-4480-a6db-c81632b1a62b.png → b53035c7-43a6-4d83-a51c-dd6b7cd14a1e.png} +0 -0
  149. /kotonebot/kaa/sprites/{1abdc520-6123-40c9-bf50-d84e46f9420c.png → b54343ba-8b17-4d72-b379-805ae3062d86.png} +0 -0
  150. /kotonebot/kaa/sprites/{49fa1fd6-8115-476d-aa60-2d63613ef931.png → b94087df-db46-4ae3-bf93-8548a25a1a23.png} +0 -0
  151. /kotonebot/kaa/sprites/{00a2e0d4-1683-4c36-88df-081673e2fe1a.png → bd101208-a87c-405c-987a-d46e1b6f0358.png} +0 -0
  152. /kotonebot/kaa/sprites/{471d7204-23f3-4d72-a852-77e8b424ddff.png → be2c3ab5-9d63-47bc-93f1-110b9668d5e2.png} +0 -0
  153. /kotonebot/kaa/sprites/{af5714a6-e4a0-47ef-9151-2a8c9614e931.png → c41567a3-84bf-4e71-9eb1-f577c0348215.png} +0 -0
  154. /kotonebot/kaa/sprites/{1466ba09-8e27-49cd-8606-f9feeecc2915.png → c5127f24-fa81-4d61-876f-ac0a377bf00e.png} +0 -0
  155. /kotonebot/kaa/sprites/{2e279b36-1057-453f-9a7e-7ac61ddce6f9.png → c542ba3e-e0c0-41a1-8cc7-dd7454b12400.png} +0 -0
  156. /kotonebot/kaa/sprites/{a2e9d3a5-6f6f-4530-8a35-a09edfd35b8e.png → c6649b6a-7d03-454c-902b-7462092878df.png} +0 -0
  157. /kotonebot/kaa/sprites/{32d066ef-5783-4ab4-8a41-5e948169b1d7.png → cf5dcb2b-c5bd-4e38-a2bb-2673db821f79.png} +0 -0
  158. /kotonebot/kaa/sprites/{48fc4fee-0d6e-4995-8d29-37791d33759e.png → d37153d2-f699-4608-abbf-43d6bd8b1469.png} +0 -0
  159. /kotonebot/kaa/sprites/{be0bca2e-dfd5-48b6-a2ac-e2699991d37b.png → d3bfc1c2-a202-42c2-9e19-61b949a340c7.png} +0 -0
  160. /kotonebot/kaa/sprites/{368d245a-8777-437a-80c4-e6b0504236e6.png → d5ad9b97-3175-4c49-a1f7-5da663125af3.png} +0 -0
  161. /kotonebot/kaa/sprites/{864b57b0-c2f9-49eb-864c-314f72c0f56c.png → d5c4ef47-257f-49a2-81e3-ba7ab6fa0f62.png} +0 -0
  162. /kotonebot/kaa/sprites/{917be8d3-602c-495c-b2ed-41b1c84e7398.png → d7ceaf00-e488-4273-968c-315962bf4837.png} +0 -0
  163. /kotonebot/kaa/sprites/{d40a6e09-4740-41a8-af0f-9da09de38bf1.png → d7e25596-8452-4eb3-aaa8-5997be3dd851.png} +0 -0
  164. /kotonebot/kaa/sprites/{3bf9aa00-7c6d-46ec-b487-7f846588acbe.png → db4ca499-5cd3-4332-b232-28ddbedd4741.png} +0 -0
  165. /kotonebot/kaa/sprites/{f404eabd-6b87-48a4-8ad7-1e7d521daa94.png → e0effef4-869d-4a0c-8db3-1c41cd255555.png} +0 -0
  166. /kotonebot/kaa/sprites/{71ce4a03-5865-47fb-a2a2-d220dbd8ead3.png → e8407109-ffa8-496b-a499-e78db90db540.png} +0 -0
  167. /kotonebot/kaa/sprites/{0e998848-beb2-4d31-9019-6afab9e0180e.png → e857f00d-81bd-4fbc-9043-c9252a075da3.png} +0 -0
  168. /kotonebot/kaa/sprites/{550c0ad2-4c38-4c34-8be2-9ea278b3f822.png → e872aa76-2947-4209-abd7-5ecb56fdc9d6.png} +0 -0
  169. /kotonebot/kaa/sprites/{a9e30963-0772-401a-85f8-33369ca22267.png → ea7dd69b-b02f-499d-acee-6bd35a033a73.png} +0 -0
  170. /kotonebot/kaa/sprites/{4365cb24-54a1-4998-8a2e-bed02fc988f5.png → f1fcc488-584d-4c61-8489-8b1b539151a9.png} +0 -0
  171. /kotonebot/kaa/sprites/{a7cc8346-8b35-4f6a-acef-8cd4d29b5591.png → f62bfba7-3d6b-4bdd-9821-ca8370ee2ff4.png} +0 -0
  172. /kotonebot/kaa/sprites/{2e5cfcf0-34fc-4b17-9283-0c269d04ae98.png → f7084b2c-5411-4180-9404-377240af1857.png} +0 -0
  173. /kotonebot/kaa/sprites/{8e021860-0c8f-4da5-84f8-1ed65ad6f720.png → f7c7f2cf-337b-4dd6-a90b-7f5c452a1640.png} +0 -0
  174. /kotonebot/kaa/sprites/{12b811a3-5b37-4510-9ebd-95455644f253.png → fbba87fb-50e5-4c2f-9218-82f1ffb7a5ba.png} +0 -0
  175. /kotonebot/kaa/sprites/{9dfde42d-fd40-435b-8a41-50be0fb8781e.png → fc7e4b97-0d87-4de9-b7ac-87ca670b6ff2.png} +0 -0
  176. /kotonebot/kaa/sprites/{63b1d3d9-a0d7-413e-8e67-215ee46e5af7.png → fe0a26ac-906c-4809-9de5-43cb4a467a9d.png} +0 -0
  177. /kotonebot/kaa/sprites/{5b3f7210-d28b-4117-a664-efb790eec911.png → ff232b25-39b4-4dcb-9e21-1d82b9e0bb7d.png} +0 -0
  178. {ksaa-2025.8.17.0.dist-info → ksaa-2025.9b1.dist-info}/WHEEL +0 -0
  179. {ksaa-2025.8.17.0.dist-info → ksaa-2025.9b1.dist-info}/entry_points.txt +0 -0
  180. {ksaa-2025.8.17.0.dist-info → ksaa-2025.9b1.dist-info}/licenses/LICENSE +0 -0
  181. {ksaa-2025.8.17.0.dist-info → ksaa-2025.9b1.dist-info}/top_level.txt +0 -0
@@ -12,7 +12,7 @@ from ..actions.scenes import goto_home, goto_shop, at_daily_shop
12
12
 
13
13
  logger = logging.getLogger(__name__)
14
14
 
15
- @action('购买 Money 物品', screenshot_mode='manual-inherit')
15
+ @action('购买 Money 物品', screenshot_mode='manual')
16
16
  def money_items2(items: Optional[list[DailyMoneyShopItems]] = None):
17
17
  """
18
18
  购买 Money 物品
@@ -59,7 +59,7 @@ def money_items2(items: Optional[list[DailyMoneyShopItems]] = None):
59
59
  if items:
60
60
  logger.info(f'{len(items)} item(s) not purchased/already purchased: {", ".join([item.to_ui_text(item) for item in items])}')
61
61
 
62
- @action('购买推荐商品', screenshot_mode='manual-inherit')
62
+ @action('购买推荐商品', screenshot_mode='manual')
63
63
  def dispatch_recommended_items():
64
64
  """
65
65
  购买推荐商品
@@ -194,13 +194,11 @@ def purchase():
194
194
  if image.find(R.Daily.ButtonRefreshMoneyShop):
195
195
  logger.info('Refreshing money shop.')
196
196
  device.click()
197
- sleep(0.5)
198
197
  # 等待刷新完成
199
198
  for _ in Loop():
200
199
  if not image.find(R.Daily.ButtonRefreshMoneyShop):
201
200
  break
202
201
  logger.debug('Waiting for money shop refresh...')
203
- device.screenshot()
204
202
  money_items2()
205
203
  sleep(0.5)
206
204
  else:
@@ -9,6 +9,7 @@ from cv2.typing import MatLike
9
9
  from kotonebot.kaa.tasks import R
10
10
  from kotonebot.kaa.config import conf
11
11
  from kotonebot.kaa.game_ui import dialog
12
+ from kotonebot.kaa.tasks.produce.common import acquisition_date_change_dialog
12
13
  from kotonebot.kaa.util.trace import trace
13
14
  from kotonebot.primitives import RectTuple, Rect
14
15
  from kotonebot import action, Interval, Countdown, device, image, sleep, ocr, contains, use_screenshot, color
@@ -188,6 +189,8 @@ def do_cards(
188
189
  device.double_click(Rect(xywh=card_rect[:4]))
189
190
  sleep(2)
190
191
  timeout_cd.reset()
192
+ # 日期变更检测
193
+ acquisition_date_change_dialog()
191
194
  # 结束条件
192
195
  if card_count == 0 and end_predicate():
193
196
  if not break_cd.started:
@@ -11,6 +11,7 @@ from kotonebot import (
11
11
  Interval,
12
12
  )
13
13
  from kotonebot.kaa.config.schema import produce_solution
14
+ from kotonebot.kaa.tasks.start_game import wait_for_home
14
15
  from kotonebot.primitives import Rect
15
16
  from kotonebot.kaa.tasks import R
16
17
  from .p_drink import acquire_p_drink
@@ -150,6 +151,63 @@ def handle_skill_card_removal():
150
151
  break
151
152
  logger.debug("Handle skill card removal finished.")
152
153
 
154
+ @action('继续当前培育.进入培育', screenshot_mode='manual-inherit')
155
+ def resume_produce_pre() -> tuple[Literal['regular', 'pro', 'master'], int]:
156
+ """
157
+ 继续当前培育.进入培育\n
158
+ 该函数用于处理‘日期变更’等情况;单独执行此函数时,要确保代码已经处于培育状态。
159
+
160
+ 前置条件:游戏首页,且当前有进行中培育\n
161
+ 结束状态:培育中的任意一个页面
162
+ """
163
+ device.screenshot()
164
+ # 点击 プロデュース中
165
+ # [res/sprites/jp/daily/home_1.png]
166
+ logger.info('Click ongoing produce button.')
167
+ device.click(R.Produce.BoxProduceOngoing)
168
+ btn_resume = image.expect_wait(R.Produce.ButtonResume)
169
+ # 判断信息
170
+ mode_result = image.find_multi([
171
+ R.Produce.ResumeDialogRegular,
172
+ R.Produce.ResumeDialogPro,
173
+ R.Produce.ResumeDialogMaster
174
+ ])
175
+ if not mode_result:
176
+ raise ValueError('Failed to detect produce mode.')
177
+ if mode_result.index == 0:
178
+ mode = 'regular'
179
+ elif mode_result.index == 1:
180
+ mode = 'pro'
181
+ else:
182
+ mode = 'master'
183
+ logger.info(f'Produce mode: {mode}')
184
+ retry_count = 0
185
+ max_retries = 5
186
+ current_week = None
187
+ while retry_count < max_retries:
188
+ week_text = ocr.ocr(R.Produce.BoxResumeDialogWeeks, lang='en').squash().regex(r'\d+/\d+')
189
+ if week_text:
190
+ weeks = week_text[0].split('/')
191
+ logger.info(f'Current week: {weeks[0]}/{weeks[1]}')
192
+ if len(weeks) >= 2:
193
+ current_week = int(weeks[0])
194
+ break
195
+ retry_count += 1
196
+ logger.warning(f'Failed to detect weeks. week_text="{week_text}". Retrying... ({retry_count}/{max_retries})')
197
+ sleep(0.5)
198
+ device.screenshot()
199
+
200
+ if retry_count >= max_retries:
201
+ raise ValueError('Failed to detect weeks after multiple retries.')
202
+ if current_week is None:
203
+ raise ValueError('Failed to detect current_week.')
204
+ # 点击 再開する
205
+ # [kotonebot-resource/sprites/jp/produce/produce_resume.png]
206
+ logger.info('Click resume button.')
207
+ device.click(btn_resume)
208
+
209
+ return mode, current_week
210
+
153
211
  AcquisitionType = Literal[
154
212
  "PDrinkAcquire", # P饮料被动领取
155
213
  "PDrinkSelect", # P饮料主动领取
@@ -167,7 +225,31 @@ AcquisitionType = Literal[
167
225
  "NetworkError", # 网络中断弹窗
168
226
  "SkipCommu", # 跳过交流
169
227
  "Loading", # 加载画面
228
+ "DateChange", # 日期变更
170
229
  ]
230
+
231
+ def acquisition_date_change_dialog() -> AcquisitionType | None:
232
+ """
233
+ 检测是否执行了日期变更。\n
234
+ 如果出现了日期变更,则对日期变更直接进行处理(返回标题、进入游戏、重进培育)\n
235
+ 注:不更新屏幕截图。
236
+ """
237
+
238
+ # 日期变更(可以考虑加入版本更新,但因为我目前没有版本更新的720x1080素材,所以没法加)
239
+ logger.debug("Check date change dialog...")
240
+ if image.find(R.Daily.TextDateChangeDialog):
241
+ logger.info("Date change dialog found.")
242
+ # 点击确认
243
+ device.click(image.expect(R.Daily.TextDateChangeDialogConfirmButton))
244
+ # 进入游戏
245
+ # 注:wait_for_home()里的Loop类第一次进入循环体时,会自动执行device.screenshot()
246
+ wait_for_home()
247
+ # 重进培育
248
+ resume_produce_pre()
249
+ return "DateChange"
250
+
251
+ return None
252
+
171
253
  @measure_time()
172
254
  @action('处理培育事件', screenshot_mode='manual')
173
255
  def fast_acquisitions() -> AcquisitionType | None:
@@ -264,6 +346,12 @@ def fast_acquisitions() -> AcquisitionType | None:
264
346
  return "PItemSelect"
265
347
  device.click(10, 10)
266
348
 
349
+ # 日期变更
350
+ result = acquisition_date_change_dialog()
351
+ if result is not None:
352
+ return result
353
+ device.click(10, 10)
354
+
267
355
  return None
268
356
 
269
357
  def until_acquisition_clear():
@@ -760,7 +760,7 @@ def hajime_from_stage(stage: ProduceStage, type: Literal['regular', 'pro', 'mast
760
760
  开始 Regular 培育。
761
761
  """
762
762
  if stage == 'action':
763
- texts = ocr.ocr(rect=R.InPurodyuusu.BoxWeeksUntilExam)
763
+ texts = ocr.ocr(rect=R.InPurodyuusu.BoxWeeksUntilExam, lang='en')
764
764
  # 提取周数
765
765
  remaining_week = texts.squash().replace('ó', '6').numbers()
766
766
  if not remaining_week:
@@ -781,10 +781,10 @@ def hajime_from_stage(stage: ProduceStage, type: Literal['regular', 'pro', 'mast
781
781
  function = hajime_master
782
782
  case _:
783
783
  assert_never(type)
784
- if texts.where(contains('中間')):
784
+ if image.find(R.InPurodyuusu.TextMidExamRemaining):
785
785
  week = MID_WEEK - remaining_week[0]
786
786
  function(start_from=week)
787
- elif texts.where(contains('最終')):
787
+ elif image.find(R.InPurodyuusu.TextFinalExamRemaining):
788
788
  week = FINAL_WEEK - remaining_week[0]
789
789
  function(start_from=week)
790
790
  else:
@@ -242,12 +242,18 @@ def is_rest_available():
242
242
  def rest():
243
243
  """执行休息"""
244
244
  logger.info("Rest for this week.")
245
- (SimpleDispatcher('in_produce.rest')
246
- # 点击休息
247
- .click(R.InPurodyuusu.Rest)
248
- # 确定
249
- .click(R.InPurodyuusu.RestConfirmBtn, finish=True)
250
- ).run()
245
+
246
+ # 部分设备上,第二次click(确定)点击速度过快,导致卡死,所以这里需要添加一个sleep
247
+ device.click(image.expect(R.InPurodyuusu.Rest))
248
+ sleep(0.5)
249
+ device.click(image.expect(R.InPurodyuusu.RestConfirmBtn))
250
+ # 原方案
251
+ # (SimpleDispatcher('in_produce.rest')
252
+ # # 点击休息
253
+ # .click(R.InPurodyuusu.Rest)
254
+ # # 确定
255
+ # .click(R.InPurodyuusu.RestConfirmBtn, finish=True)
256
+ # ).run()
251
257
 
252
258
  @action('判断是否处于行动页面')
253
259
  def at_action_scene():
@@ -3,6 +3,7 @@ from typing import Optional, Literal
3
3
  from typing_extensions import assert_never
4
4
 
5
5
  from kotonebot.kaa.config.schema import produce_solution
6
+ from kotonebot.kaa.tasks.produce.common import resume_produce_pre
6
7
  from kotonebot.ui import user
7
8
  from kotonebot.kaa.tasks import R
8
9
  from kotonebot.kaa.config import conf
@@ -118,60 +119,23 @@ def select_set(index: int):
118
119
  logger.warning(f'Failed to navigate to set #{index}. Current set is #{final_current}. Retrying... ({retry_count}/{max_retries})')
119
120
 
120
121
  logger.error(f'Failed to navigate to set #{index} after {max_retries} retries.')
121
-
122
- @action('继续当前培育', screenshot_mode='manual-inherit')
123
- def resume_produce():
122
+
123
+ @action('继续当前培育.继续培育', screenshot_mode='manual-inherit')
124
+ def resume_produce_lst(
125
+ mode: Literal['regular', 'pro', 'master'],
126
+ current_week: int
127
+ ):
124
128
  """
125
- 继续当前培育
129
+ 继续当前培育.继续培育\n
130
+ 该函数正常情况不应该被单独调用。
126
131
 
127
- 前置条件:游戏首页,且当前有进行中培育\n
132
+ 前置条件:培育中的任意一个页面\n
128
133
  结束状态:游戏首页
134
+
135
+ :param mode: 培育模式
136
+ :param current_week: 培育的周数
129
137
  """
130
- device.screenshot()
131
- # 点击 プロデュース中
132
- # [res/sprites/jp/daily/home_1.png]
133
- logger.info('Click ongoing produce button.')
134
- device.click(R.Produce.BoxProduceOngoing)
135
- btn_resume = image.expect_wait(R.Produce.ButtonResume)
136
- # 判断信息
137
- mode_result = image.find_multi([
138
- R.Produce.ResumeDialogRegular,
139
- R.Produce.ResumeDialogPro,
140
- R.Produce.ResumeDialogMaster
141
- ])
142
- if not mode_result:
143
- raise ValueError('Failed to detect produce mode.')
144
- if mode_result.index == 0:
145
- mode = 'regular'
146
- elif mode_result.index == 1:
147
- mode = 'pro'
148
- else:
149
- mode = 'master'
150
- logger.info(f'Produce mode: {mode}')
151
- retry_count = 0
152
- max_retries = 5
153
- current_week = None
154
- while retry_count < max_retries:
155
- week_text = ocr.ocr(R.Produce.BoxResumeDialogWeeks, lang='en').squash().regex(r'\d+/\d+')
156
- if week_text:
157
- weeks = week_text[0].split('/')
158
- logger.info(f'Current week: {weeks[0]}/{weeks[1]}')
159
- if len(weeks) >= 2:
160
- current_week = int(weeks[0])
161
- break
162
- retry_count += 1
163
- logger.warning(f'Failed to detect weeks. week_text="{week_text}". Retrying... ({retry_count}/{max_retries})')
164
- sleep(0.5)
165
- device.screenshot()
166
-
167
- if retry_count >= max_retries:
168
- raise ValueError('Failed to detect weeks after multiple retries.')
169
- if current_week is None:
170
- raise ValueError('Failed to detect current_week.')
171
- # 点击 再開する
172
- # [kotonebot-resource/sprites/jp/produce/produce_resume.png]
173
- logger.info('Click resume button.')
174
- device.click(btn_resume)
138
+
175
139
  match mode:
176
140
  case 'regular':
177
141
  resume_regular_produce(current_week)
@@ -181,6 +145,19 @@ def resume_produce():
181
145
  resume_master_produce(current_week)
182
146
  case _:
183
147
  assert_never(mode)
148
+
149
+ @action('继续当前培育', screenshot_mode='manual-inherit')
150
+ def resume_produce():
151
+ """
152
+ 继续当前培育
153
+
154
+ 前置条件:游戏首页,且当前有进行中培育\n
155
+ 结束状态:游戏首页
156
+ """
157
+
158
+ mode, current_week = resume_produce_pre()
159
+
160
+ resume_produce_lst(mode, current_week)
184
161
 
185
162
  @action('执行培育', screenshot_mode='manual-inherit')
186
163
  def do_produce(
@@ -198,10 +175,10 @@ def do_produce(
198
175
  :param idol_skin_id: 要培育的偶像。如果为 None,则使用配置文件中的偶像。
199
176
  :param mode: 培育模式。
200
177
  :return: 是否因为 AP 不足而跳过本次培育。
201
- :raises ValueError: 如果 `memory_set_index` 不在 [1, 10] 的范围内。
178
+ :raises ValueError: 如果 `memory_set_index` 不在 [1, 20] 的范围内。
202
179
  """
203
- if memory_set_index is not None and not 1 <= memory_set_index <= 10:
204
- raise ValueError('`memory_set_index` must be in range [1, 10].')
180
+ if memory_set_index is not None and not 1 <= memory_set_index <= 20:
181
+ raise ValueError('`memory_set_index` must be in range [1, 20].')
205
182
 
206
183
  if not at_home():
207
184
  goto_home()
@@ -209,9 +186,13 @@ def do_produce(
209
186
  device.screenshot()
210
187
  # 点击培育按钮,然后判断是新开还是再开培育
211
188
  for _ in Loop(interval=0.6):
212
- if image.find(R.Produce.TitleIconProudce):
189
+ if image.find(R.Produce.LogoHajime): # Hajime培育界面
213
190
  # 新开
214
191
  break
192
+ elif image.find(R.Produce.LogoNia): # NIA培育界面
193
+ device.click(R.Produce.PointNiaToHajime)
194
+ sleep(0.5)
195
+ continue
215
196
  elif image.find(R.Produce.ButtonResume):
216
197
  # 再开
217
198
  resume_produce()
@@ -250,7 +231,7 @@ def do_produce(
250
231
  # [kotonebot-resource\sprites\jp\produce\screenshot_no_enough_ap_3.png]
251
232
  logger.info('AP insufficient. Try to use AP drink.')
252
233
  for _ in Loop():
253
- if image.find(R.Produce.ButtonUse):
234
+ if image.find(R.Produce.ButtonUse, colored=True):
254
235
  device.click()
255
236
  elif image.find(R.Produce.ButtonRefillAP):
256
237
  device.click()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ksaa
3
- Version: 2025.8.17.0
3
+ Version: 2025.9b1
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
@@ -27,39 +27,58 @@ Requires-Dist: numpy<2.0
27
27
  Requires-Dist: pywin32==310
28
28
  Requires-Dist: ahk==1.8.3
29
29
  Requires-Dist: win11toast==0.35
30
+ Requires-Dist: keyboard==0.13.5
30
31
  Dynamic: license-file
31
32
 
32
33
  # Kotone's Auto Assistant 琴音小助手
33
34
  ## 功能
34
35
  * 自动日常,包括
35
- * 领取礼物(邮件)
36
- * 领取活动费
37
- * 领取工作奖励并自动重新安排工作
38
- * 竞赛挑战
39
- * 领取任务奖励
40
- * 清理商店
41
- * 包括 AP 商店和金币商店
42
- * 可以购买推荐商品,或者指定要购买的物品
43
- * 低配版自动培育
44
- * 支持 REGULAR 和 PRO 模式
45
- * 支持指定 P 偶像<sup>1</sup>
46
- * 支持指定使用增强道具(笔记数量和 Pt 数量提升)
47
- * 暂时**只能使用自动编成**回忆和支援卡
48
- * 对于非练习周,如果没有推荐休息,暂时只会按顺序执行活动支给(活動支給)、文化课(授業)、外出(おでかけ)、休息这四种,不支持咨询(相談)
49
- * 领取技能卡和 P 饮料时,固定领取第一个。若 P 饮料溢出,则不领取
50
-
51
- <sup>1</sup> 见后文的注意事项
36
+ * 领取礼物(邮件)
37
+ * 领取活动费
38
+ * 领取工作奖励并自动重新安排工作
39
+ * 竞赛挑战
40
+ * 领取任务奖励
41
+ * 清空商店(AP 商店和金币商店)
42
+ * 社团奖励
43
+ * 升级一张支援卡
44
+ * 自动培育
45
+ * 支持「初」的三种难度
46
+ * 支持指定偶像
47
+ * 支持使用增强道具(笔记数量和 Pt 数量提升)
48
+ * 暂时**只能使用自动编成**回忆和支援卡
52
49
 
53
- ## 安装
54
- ### 模拟器要求
55
- * 分辨率:必须是 1280x720
56
- * 系统版本:Android 10+(Q,API 29),这是游戏的要求
57
- * 已开启游戏加速器或代理且网络通畅
50
+ ## 免责声明
51
+ **请在使用本项目前仔细阅读以下内容。使用本脚本将带来包括但不限于账号被封禁的风险。**
52
+
53
+ ### 总则
54
+ 本项目(琴音小助手)是一个为游戏 **《学园偶像大师》(学園アイドルマスター)** 设计的自动操作脚本。本项目的创建目的仅为技术学习与研究,并非为了提供商业服务或鼓励不正当的游戏行为。
55
+
56
+ ### 版权声明
57
+ 本项目所使用的部分资源文件,包括但不限于图像、音频、模型等,其版权归属于其原始权利人。该游戏的开发商为 **QualiArts**,发行商为**万代南梦宫娱乐(Bandai Namco Entertainment Inc.)**。
58
+
59
+ 1. **权利归属**:本项目中使用的所有相关游戏资源文件的版权、商标权及其他一切知识产权,均归 **QualiArts**、**万代南梦宫娱乐**或其相关权利方所有。
58
60
 
59
- ### 普通用户
60
- TODO
61
+ 2. **非官方性质**:本项目为非官方、非商业性质的开源项目。本项目的开发者与 **QualiArts** 及 **万代南梦宫娱乐**没有任何形式的关联、合作或官方授权。
62
+
63
+ ### 核心风险与责任限制
64
+ 1. **账号封禁风险**:**您必须清楚地认识到,使用任何形式的第三方自动操作脚本(包括本项目)都有违反《学园偶像大师》的用户协议(利用規約)的潜在风险。游戏运营商有权对使用此类脚本的账号采取惩罚措施,包括但不限于临时或永久封禁账号。对于因使用本脚本而导致的任何账号损失(如封号、数据回滚等),项目作者概不负责。**
65
+
66
+ > ・对本服务的服务器等进行非法访问、窃取数据、使用使软件进行非法处理的程序、使用工具等获取信息或使用工具等不正当推进游戏的行为。
67
+
68
+ > ・本サービスのサーバー等への不正アクセス行為、データ窃取行為、ソフトウェアに不正な処理を行わせるプログラムを使用する行為、ツール等を使用して情報を取得する行為またはツール等を使用して不正にゲームを有利に進める行為
69
+
70
+ 2. **使用限制**:本项目的全部内容**严禁用于任何商业用途或恶意破坏游戏平衡的行为**。任何将本项目用于此类活动的行为,均可能构成对版权方的侵权和对游戏运营商的违约,由此产生的一切法律责任由使用者自行承担。
61
71
 
62
- ### 技术用户
72
+ 3. **无担保与责任限制**:本项目按“原样”提供,不附带任何形式的明示或暗示担保,包括其功能的稳定性、准确性或持续可用性。对于因使用或无法使用本项目而导致的任何直接、间接、偶然、特殊或继发性损害(**包括但不限于账号封禁**),项目作者概不负责。
73
+
74
+ **继续下载、安装或使用本项目,即表示您已完全阅读、理解并同意承担以上所有风险和条款。如果您不同意,请立即停止使用并删除本项目的所有相关文件。**
75
+
76
+ ## 安装与使用
77
+ 参见[【金山文档】使用手册](https://p.kdocs.cn/s/6IJJBRRBAAAFS)。
78
+
79
+ 如果你想了解技术细节,可以继续往下阅读。如果只是想要使用 kaa,你可以打开上面的使用手册,关掉这个页面了。
80
+
81
+ ## 安装
63
82
  琴音小助手通过 pip 分发,因此你可以执行下面的命令来安装:
64
83
  ```bash
65
84
  # Python == 3.10
@@ -90,58 +109,13 @@ kaa
90
109
  需要注意的是,配置文件 `config.json` 会自动在工作目录下生成。
91
110
  因此你最好每次都在同一个地方运行 kaa,否则可能会出现找不到配置文件的情况。
92
111
 
93
- ## 使用
94
- ### 配置
95
- TODO
96
-
97
- ### 注意事项
98
- > [!IMPORTANT]
99
- > 建议**使用亲密度至少为 7 的偶像**进行培育,
100
- > 因为琴音小助手暂时无法处理亲密度提升事件。
101
-
102
- ## 开源协议
103
- kaa 本体及框架(kotonebot 文件夹)、相关辅助脚本(tools 文件夹)使用 **GPLv3 协议**开源。kaa 开发工具(kotonebot-devtool)、启动器(bootstrap 文件夹)以 **MIT 协议**开源。
104
-
105
- kaa 的开发主要用到了以下开源项目:
106
- * [GkmasObjectManager
107
- ](https://github.com/AllenHeartcore/GkmasObjectManager):用于提取游戏图像资源,以 GPLv3 协议开源。
108
- * [gakumasu-diff](https://github.com/vertesan/gakumasu-diff):游戏数据。
109
-
110
- kaa 的开发还参考了以下开源项目:
111
- * [EmulatorExtras](https://github.com/MaaXYZ/EmulatorExtras):MuMu 与雷电模拟器的截图与控制接口定义。
112
- * [blue_archive_auto_script](https://github.com/pur1fying/blue_archive_auto_script):MuMu 与雷电模拟器的截图与控制接口的 Python 实现,以及各模拟器的控制实现。
113
-
114
- ## 免责声明
115
- **请在使用本项目前仔细阅读以下内容。使用本脚本将带来包括但不限于账号被封禁的风险。**
116
-
117
- ### 总则
118
- 本项目(琴音小助手)是一个为游戏 **《学园偶像大师》(学園アイドルマスター)** 设计的自动操作脚本。本项目的创建目的仅为技术学习与研究,并非为了提供商业服务或鼓励不正当的游戏行为。
119
-
120
- ### 版权声明
121
- 本项目所使用的部分资源文件,包括但不限于图像、音频、模型等,其版权归属于其原始权利人。该游戏的开发商为 **QualiArts**,发行商为**万代南梦宫娱乐(Bandai Namco Entertainment Inc.)**。
122
-
123
- 1. **权利归属**:本项目中使用的所有相关游戏资源文件的版权、商标权及其他一切知识产权,均归 **QualiArts**、**万代南梦宫娱乐**或其相关权利方所有。
124
-
125
- 2. **非官方性质**:本项目为非官方、非商业性质的开源项目。本项目的开发者与 **QualiArts** 及 **万代南梦宫娱乐**没有任何形式的关联、合作或官方授权。
126
-
127
- ### 核心风险与责任限制
128
- 1. **账号封禁风险**:**您必须清楚地认识到,使用任何形式的第三方自动操作脚本(包括本项目)都有违反《学园偶像大师》的用户协议(利用規約)的潜在风险。游戏运营商有权对使用此类脚本的账号采取惩罚措施,包括但不限于临时或永久封禁账号。对于因使用本脚本而导致的任何账号损失(如封号、数据回滚等),项目作者概不负责。**
129
-
130
- > ・对本服务的服务器等进行非法访问、窃取数据、使用使软件进行非法处理的程序、使用工具等获取信息或使用工具等不正当推进游戏的行为。
131
-
132
- > ・本サービスのサーバー等への不正アクセス行為、データ窃取行為、ソフトウェアに不正な処理を行わせるプログラムを使用する行為、ツール等を使用して情報を取得する行為またはツール等を使用して不正にゲームを有利に進める行為
133
-
134
- 2. **使用限制**:本项目的全部内容**严禁用于任何商业用途或恶意破坏游戏平衡的行为**。任何将本项目用于此类活动的行为,均可能构成对版权方的侵权和对游戏运营商的违约,由此产生的一切法律责任由使用者自行承担。
135
-
136
- 3. **无担保与责任限制**:本项目按“原样”提供,不附带任何形式的明示或暗示担保,包括其功能的稳定性、准确性或持续可用性。对于因使用或无法使用本项目而导致的任何直接、间接、偶然、特殊或继发性损害(**包括但不限于账号封禁**),项目作者概不负责。
137
-
138
- **继续下载、安装或使用本项目,即表示您已完全阅读、理解并同意承担以上所有风险和条款。如果您不同意,请立即停止使用并删除本项目的所有相关文件。**
139
-
140
112
  ## 开发
141
- [DEVELOPMENT.md](./docs/DEVELOPMENT.md)
113
+ 环境配置见 [DEVELOPMENT.md](./docs/DEVELOPMENT.md)
114
+
115
+ 开发指南见 [QUICK_START.md](./docs/GUIDE.md)。
142
116
 
143
117
  ## 贡献
144
- 非常欢迎 PR。
118
+ 欢迎 PR。
145
119
 
146
120
  你可以从 Github Issue 中选择一个 Issue 解决,或者从下面的路线图里选一个任务讨论。
147
121
 
@@ -150,32 +124,39 @@ kaa 的开发还参考了以下开源项目:
150
124
  (带删除线标记的为已完成)
151
125
 
152
126
  ### 培育
153
- * 允许指定领取 P 饮料、P 物品、技能卡的领取选择优先级
154
- * ~~允许指定行动优先级~~
155
- * 自动使用 P 饮料
156
- * ~~支持非凡(アノマリー)属性偶像的自动培育~~
157
- * ~~支持琴音的自动培育~~
127
+ * 基本功能
128
+ * ~~允许指定行动优先级~~
129
+ * 考试时使用 P 饮料
130
+ * ~~支持非凡(アノマリー)属性偶像的自动培育~~
131
+ * ~~支持琴音的自动培育~~
132
+ * 模式适配
133
+ * ~~支持 MASTER 培育~~
134
+ * NIA 培育
158
135
  * 允许优先选择活动加成高的偶像进行培育
159
- * ~~支持 MASTER 培育~~
160
- * 支持 NIA 培育
136
+ * 爬塔(偶像之路)
137
+ * 智能化培育逻辑
138
+ * 允许自定义领取 P 饮料、P 物品、技能卡的领取
139
+ * 复刻一个培育模拟器
140
+ * 训练并使用 AI 接管培育流程
161
141
 
162
142
  ### 日常
163
143
  * ~~竞赛按分数差距优先选择~~
164
144
  * ~~自动硬币扭蛋(コインガシャ)~~
145
+ * 活动
146
+ * 活动商店购买
147
+ * 活动扭蛋
165
148
 
166
149
  ### 调度
167
150
  * ~~模拟器启停~~
168
151
  * 记录任务执行时间与次数,避免重复执行。例如竞赛每天只执行一次
169
152
  * 常驻运行与自动运行
170
153
  * ~~命令行接口~~
171
- * 尝试接入 ALAS
172
154
 
173
155
  ### UI
174
156
  * UI
175
- * 使用 Flet/Flutter 重写 UI
176
- * 分离脚本与 UI,允许 UI 与脚本分别独立运行
177
- * 启动器
178
- * 使用 C# 替换当前的简易 .bat 文件
157
+ * 使用 Web 技术重写 UI,替换现在的 Gradio 实现
158
+ * 分离脚本与 UI,允许 UI 与脚本分别独立运行
159
+ * ~~启动器~~
179
160
 
180
161
  ### 跨平台
181
162
  * Android 支持
@@ -186,12 +167,33 @@ kaa 的开发还参考了以下开源项目:
186
167
  - [ ] 使用 Pyjnius 绕过 ADB ,调用无障碍直接控制设备
187
168
  * Linux 支持
188
169
 
189
- ### 开发工具
190
- * 使用 Konva.js 重构 ImageAnnotation 工具
191
- * 将开发工具通过 VSCode 扩展与 VSCode 整合
170
+ ### 开发工具与框架
171
+ * 分离框架为一个单独的项目
172
+ * 分离资源管理为一个单独的项目
173
+ * 重构资源编辑器(ImageAnnotation 工具)
174
+ * 重构 Devtool 工具
175
+ * 将开发工具通过 VSCode 扩展与 VSCode 整合
192
176
 
193
177
  ### 其他
194
178
  * 适配汉化版
195
179
  - [ ] 需要一个合适的方法自动切换不用语言的资源文件
196
180
  - [ ] 需要一个合适的工具来辅助替换模板图片文件
197
181
  - [ ] 收集汉化版本的截图
182
+ * 挂机优化
183
+ * 夜间挂机:完成后自动休眠/关机、自动降低屏幕亮度、自动静音
184
+ * ~~闲置挂机~~
185
+ * 资源记录
186
+ * 记录并保存历史钻石与金币数据
187
+ * 展示变化曲线图
188
+
189
+ ## 开源协议
190
+ kaa 本体及框架(kotonebot 文件夹)、相关辅助脚本(tools 文件夹)使用 **GPLv3 协议**开源。kaa 开发工具(kotonebot-devtool)、启动器(bootstrap 文件夹)以 **MIT 协议**开源。
191
+
192
+ kaa 的开发主要用到了以下开源项目:
193
+ * [GkmasObjectManager
194
+ ](https://github.com/AllenHeartcore/GkmasObjectManager):用于提取游戏图像资源,以 GPLv3 协议开源。
195
+ * [gakumasu-diff](https://github.com/vertesan/gakumasu-diff):游戏数据。
196
+
197
+ kaa 的开发还参考了以下开源项目:
198
+ * [EmulatorExtras](https://github.com/MaaXYZ/EmulatorExtras):MuMu 与雷电模拟器的截图与控制接口定义。
199
+ * [blue_archive_auto_script](https://github.com/pur1fying/blue_archive_auto_script):MuMu 与雷电模拟器的截图与控制接口的 Python 实现,以及各模拟器的控制实现。