ksaa 2025.7.20.0__py3-none-any.whl → 2025.7.27.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 (155) hide show
  1. kotonebot/backend/bot.py +60 -12
  2. kotonebot/backend/context/task_action.py +9 -46
  3. kotonebot/backend/dispatch.py +1 -104
  4. kotonebot/backend/flow_controller.py +3 -1
  5. kotonebot/errors.py +37 -2
  6. kotonebot/interop/win/message_box.py +314 -0
  7. kotonebot/interop/win/task_dialog.py +469 -0
  8. kotonebot/kaa/config/produce.py +8 -6
  9. kotonebot/kaa/config/schema.py +2 -0
  10. kotonebot/kaa/errors.py +38 -0
  11. kotonebot/kaa/main/gr.py +22 -5
  12. kotonebot/kaa/metadata.py +14 -0
  13. kotonebot/kaa/resources/__pycache__/__init__.cpython-310.pyc +0 -0
  14. kotonebot/kaa/resources/game.db +0 -0
  15. kotonebot/kaa/resources/game_ver.txt +0 -0
  16. kotonebot/kaa/tasks/R.py +126 -126
  17. kotonebot/kaa/tasks/daily/contest.py +39 -8
  18. kotonebot/kaa/tasks/daily/purchase.py +0 -1
  19. kotonebot/kaa/tasks/end_game.py +4 -3
  20. kotonebot/kaa/tasks/produce/in_purodyuusu.py +32 -29
  21. kotonebot/kaa/tasks/produce/produce.py +2 -1
  22. kotonebot/kaa/tasks/start_game.py +2 -0
  23. kotonebot/ui/user.py +43 -13
  24. {ksaa-2025.7.20.0.dist-info → ksaa-2025.7.27.0.dist-info}/METADATA +2 -1
  25. {ksaa-2025.7.20.0.dist-info → ksaa-2025.7.27.0.dist-info}/RECORD +155 -152
  26. /kotonebot/kaa/sprites/{70671b9e-9ebb-4dee-bc5a-dbcb70364adf.png → 039771df-9741-4f4e-9793-9017386ac68e.png} +0 -0
  27. /kotonebot/kaa/sprites/{32907971-0e98-4adc-91b8-ac0308c11c3c.png → 0c826d2e-41ce-474b-ad99-f4561baf03de.png} +0 -0
  28. /kotonebot/kaa/sprites/{89d3c0a6-266e-486e-998d-ecd0d2536814.png → 0fb240b0-1bb5-4aee-8ad3-a24062ee9a20.png} +0 -0
  29. /kotonebot/kaa/sprites/{20733b9b-1df7-42af-ab55-3364e8623602.png → 10636534-51ee-4698-b582-e56751bebb4d.png} +0 -0
  30. /kotonebot/kaa/sprites/{562f176f-af1e-4352-aeed-62e362177f9f.png → 1218bb7e-2cab-477e-aa51-f71aa4f52a7d.png} +0 -0
  31. /kotonebot/kaa/sprites/{b66e13a1-636c-4478-9d72-7d200ff670a9.png → 1917a430-d216-4359-8f62-0b62108f58c1.png} +0 -0
  32. /kotonebot/kaa/sprites/{39f88061-a997-4a8a-b09e-4a2425f4a83a.png → 1f56fbc1-47f5-4dc3-b91b-6e49e4ea00dc.png} +0 -0
  33. /kotonebot/kaa/sprites/{3e613561-8dbd-4094-9889-53f08541a716.png → 25797538-2dc6-436c-b64a-597ae6d5db6e.png} +0 -0
  34. /kotonebot/kaa/sprites/{38c0ed08-5af3-4fca-a37f-27d66fd35a4c.png → 27d59ead-0f94-4554-8c9a-cd3aeb606fea.png} +0 -0
  35. /kotonebot/kaa/sprites/{cab0b1ff-b40a-42a8-b799-75e309b2dee3.png → 2822bf2b-b350-437b-b330-0e8c122bfbe7.png} +0 -0
  36. /kotonebot/kaa/sprites/{9169bf8e-5907-42e5-b102-47da3bf9a0b1.png → 287ec12a-c1fb-4b8f-a77c-acc99821eabd.png} +0 -0
  37. /kotonebot/kaa/sprites/{131fb7e1-6eb9-4722-9943-76ff05c5baee.png → 290aaff5-71eb-4d71-87db-3757d3e9794b.png} +0 -0
  38. /kotonebot/kaa/sprites/{1737a9e0-f8c4-416e-bbad-cb97a658ae9a.png → 29fcf4cb-883f-475e-a68f-107cffc83f1c.png} +0 -0
  39. /kotonebot/kaa/sprites/{6ac4a3b5-66d2-4429-8cd1-945fbb48280c.png → 2ac90dcf-2284-437e-a61e-51934f937f8f.png} +0 -0
  40. /kotonebot/kaa/sprites/{05a23a4a-9b93-4fbd-b4e9-15a7c4a91fdc.png → 2e3410a1-49b5-4f65-8f26-bb1df213c2b8.png} +0 -0
  41. /kotonebot/kaa/sprites/{9b696383-10dd-4a35-8546-1ccdb8891373.png → 30bc31e4-40b3-4bcb-bb36-1dd5a8c59a32.png} +0 -0
  42. /kotonebot/kaa/sprites/{9dbc5d76-8c6a-4638-b0c2-eba79542ec58.png → 34eaf943-a8b5-4358-aadc-62ff656ab542.png} +0 -0
  43. /kotonebot/kaa/sprites/{0aa4472c-b533-46cc-a072-9d165d955424.png → 37f1d878-467f-4ba0-bc59-bb327797191b.png} +0 -0
  44. /kotonebot/kaa/sprites/{1aed664e-ceb3-4a1d-a338-df08dc8ebbd3.png → 3aa13898-1a50-4234-b9ec-f35878f05592.png} +0 -0
  45. /kotonebot/kaa/sprites/{0e29489c-6728-46cd-bd13-2b9d9e74b2da.png → 3ca43ccf-8748-439f-80f7-a95978a6b1f2.png} +0 -0
  46. /kotonebot/kaa/sprites/{dcc2da94-2c9d-4248-bce5-731651e391ae.png → 3efe8341-33bc-492e-8a0f-69a507502b43.png} +0 -0
  47. /kotonebot/kaa/sprites/{b169172d-8ce2-432a-bed6-1dfc30bcc95c.png → 3f6b5de5-c942-4ef1-8b04-5ee6859bb27b.png} +0 -0
  48. /kotonebot/kaa/sprites/{f0952cb2-dadb-4d9a-933e-cabcbf8850fb.png → 432aad91-9cc5-4518-bbfd-6cbed522dac6.png} +0 -0
  49. /kotonebot/kaa/sprites/{c577c19e-aa5d-4670-b44c-1c0b3d72451a.png → 452e213a-9762-42ec-8e2b-2cabc3eb254d.png} +0 -0
  50. /kotonebot/kaa/sprites/{79226566-26e2-4c2f-8f6a-4e4deb9fa9ea.png → 46a8bf3e-7149-4d9b-8b31-a6b9c3d6b166.png} +0 -0
  51. /kotonebot/kaa/sprites/{fd77088d-652a-472e-9f84-dcc83d40a6bf.png → 48293a53-d05b-4198-995f-103531f26923.png} +0 -0
  52. /kotonebot/kaa/sprites/{7f4accdd-bd72-45e6-8469-692e27986486.png → 4c0dc941-6ecf-45b4-91f8-3fb10e770512.png} +0 -0
  53. /kotonebot/kaa/sprites/{2cea06ca-99f6-4bc5-8dd0-2bba80b07b17.png → 50986ada-ff64-405f-911d-f6c3655fb658.png} +0 -0
  54. /kotonebot/kaa/sprites/{10a329df-2515-4551-a130-07e86058abdf.png → 535db21f-b22e-4a05-a7e8-81e3664305b8.png} +0 -0
  55. /kotonebot/kaa/sprites/{1609d037-a3fc-485b-96c6-cf1790434c01.png → 5410568f-2e3c-49b2-8112-f43c52342298.png} +0 -0
  56. /kotonebot/kaa/sprites/{d627ba81-9c86-4b53-9ab9-86c8748d8daa.png → 5aa47ea4-79de-4547-9320-cf8c614c7366.png} +0 -0
  57. /kotonebot/kaa/sprites/{a77c1724-eb8f-4a1a-8997-516deb75ae78.png → 5d1627a0-f803-4736-8c3c-7bf1f0de0aa0.png} +0 -0
  58. /kotonebot/kaa/sprites/{88945ecf-9ac5-46dc-8af6-b21dbfded665.png → 5eaa9fa9-0bce-47ce-8f28-d5ba32c566c3.png} +0 -0
  59. /kotonebot/kaa/sprites/{63cd694d-343e-468d-a53f-360c97f71ee6.png → 650eee06-c926-4e91-bd2c-38f3068938c0.png} +0 -0
  60. /kotonebot/kaa/sprites/{5aef61f9-d616-42f2-ae8d-5c5a033231d3.png → 652c9b9f-316e-46b2-a2d4-8dc8d5e6116f.png} +0 -0
  61. /kotonebot/kaa/sprites/{d83f2631-b9d8-4fd6-ab1c-50b0a013f3f0.png → 6621d884-5ba5-4356-bd50-94239ec5395a.png} +0 -0
  62. /kotonebot/kaa/sprites/{dcc214f3-9707-4a2c-aaff-3834e6f12f0b.png → 66de3573-9562-4cd8-82df-5d6be6b1f213.png} +0 -0
  63. /kotonebot/kaa/sprites/{a5d3efa4-ec3e-4637-835a-147af973bbf8.png → 6b71968e-97d3-4fad-89d0-ffb7743446a9.png} +0 -0
  64. /kotonebot/kaa/sprites/{f16d6f1e-b9ff-4cff-aed3-dd150caf8f07.png → 6c7cb85e-0aac-40d8-9b55-d9b455c89985.png} +0 -0
  65. /kotonebot/kaa/sprites/{1bb92c94-af17-492e-9d22-393c12b7f346.png → 6cba0d0c-a67b-470d-9abe-1c55b14310ba.png} +0 -0
  66. /kotonebot/kaa/sprites/{731ed76d-6d6c-48b9-82c3-045cc1ecc419.png → 6d59fa9e-b988-47e3-99b5-e06510f98e45.png} +0 -0
  67. /kotonebot/kaa/sprites/{04425af8-ba28-407d-ad18-8c3a2483025d.png → 6eb8e6a5-b361-4c4f-b161-e2ccd5ef277d.png} +0 -0
  68. /kotonebot/kaa/sprites/{e36ec591-8bf5-4deb-9f28-3977576de931.png → 6ed77f5b-e4ce-4722-934e-3c5ec34b6d5a.png} +0 -0
  69. /kotonebot/kaa/sprites/{8e0964c4-6e34-43cb-a333-d60bceae7f11.png → 6f4d32df-2a01-40e8-bfd1-9e83c6864789.png} +0 -0
  70. /kotonebot/kaa/sprites/{41f0e90a-a352-450c-a788-0303d038227a.png → 6f56551e-bfa3-4efe-b95a-411e54885ceb.png} +0 -0
  71. /kotonebot/kaa/sprites/{d54fc8f5-e50d-45dd-b123-92414f93488c.png → 725d6877-7260-4ca3-91d3-da4e9ccbf206.png} +0 -0
  72. /kotonebot/kaa/sprites/{d14633f5-9682-4b59-a4ef-e92a2d26d86b.png → 74bb6050-8d6d-48aa-8e71-31e92304b5af.png} +0 -0
  73. /kotonebot/kaa/sprites/{a009c9de-029e-4999-b728-e6877374325a.png → 760655f5-1d32-437c-81fc-306e80fabfd8.png} +0 -0
  74. /kotonebot/kaa/sprites/{487ae483-2787-4982-93b0-4847665683e9.png → 763968fd-f7ab-4a46-a0ef-6a496b21d3dd.png} +0 -0
  75. /kotonebot/kaa/sprites/{0e4b4481-6805-4a1b-a3d8-913681968662.png → 77b7b404-bc0c-4637-96b0-7344f782989e.png} +0 -0
  76. /kotonebot/kaa/sprites/{fef40be1-5b75-4023-9977-df46cd211a86.png → 79cddeac-828b-49a1-b860-b422e2c8d2ea.png} +0 -0
  77. /kotonebot/kaa/sprites/{3645c21a-acd8-4ec4-a286-d9031736342c.png → 7b74cacf-b8b4-4915-a71a-1dab321dab60.png} +0 -0
  78. /kotonebot/kaa/sprites/{c92a2935-cf41-4f56-911a-bc40f122cbf3.png → 7d931bd2-5cfc-4e4c-83c0-498b5e17d15c.png} +0 -0
  79. /kotonebot/kaa/sprites/{2bb9dbf7-6cb2-426a-a35c-7228a1320220.png → 7dc4ea14-42a9-4b2f-a164-99da3dbb000b.png} +0 -0
  80. /kotonebot/kaa/sprites/{df9d09c3-8f15-4caf-bb21-f69644fb4705.png → 7dc5f386-2db3-4405-9796-34f1b8a6755f.png} +0 -0
  81. /kotonebot/kaa/sprites/{40f04ad0-44c0-4913-89aa-bc466bfd6ace.png → 843174a9-6cff-45ba-9573-67904691a30f.png} +0 -0
  82. /kotonebot/kaa/sprites/{ddae5592-adc3-4c36-bfdd-6c6d91823296.png → 85ca40d2-f02e-45a4-9db0-c483f6ae1db5.png} +0 -0
  83. /kotonebot/kaa/sprites/{15fe6944-396c-467b-80db-476bbdf65a80.png → 88207e47-1f50-485f-9984-54cea01d740a.png} +0 -0
  84. /kotonebot/kaa/sprites/{49ccf947-13a5-4839-8f85-d0fe40094e77.png → 88e01e80-50e2-4b0f-834c-86f6a3508287.png} +0 -0
  85. /kotonebot/kaa/sprites/{a4553bb1-27b9-47c4-8f51-1cff2129df8e.png → 89b364ae-9050-4671-b595-632ba0efc78b.png} +0 -0
  86. /kotonebot/kaa/sprites/{2cff833f-10bd-478c-8760-99162c71e9e3.png → 8d1a63f3-7ec4-405c-9d78-d176018389dc.png} +0 -0
  87. /kotonebot/kaa/sprites/{6e59d072-06f8-488f-a453-8ba60a05d691.png → 8f941a44-bbe8-4d3d-82b3-7b14c2356998.png} +0 -0
  88. /kotonebot/kaa/sprites/{183df82f-acea-4d40-87a8-18fc8ddab6d0.png → 95962144-c639-4902-ad2d-be11ccc5eaab.png} +0 -0
  89. /kotonebot/kaa/sprites/{a3384f38-334c-440a-ab06-405bad293bab.png → 96c79132-d55f-43d2-bdb3-6fe55734b6d5.png} +0 -0
  90. /kotonebot/kaa/sprites/{3fc47270-febf-492e-b8fc-0a9793bc0d56.png → 9895c28f-eba2-4e37-911b-6c0f05f7d72b.png} +0 -0
  91. /kotonebot/kaa/sprites/{bc01675d-453c-43f2-9075-f9567c8aa6f9.png → 98df22d6-1ff2-4c9a-87e7-f70e9f91019e.png} +0 -0
  92. /kotonebot/kaa/sprites/{71d6a37d-45df-456f-b673-d1e8b35ee619.png → 9b01dbe2-5043-40af-858c-33bbbf4ccc22.png} +0 -0
  93. /kotonebot/kaa/sprites/{fda67b44-d46d-4789-89a3-0786c60987ab.png → 9dc9f428-6e6d-4362-b4d4-dce50d9e732e.png} +0 -0
  94. /kotonebot/kaa/sprites/{3a595ec9-d813-4c09-b8b8-be8f5da88faa.png → 9df02971-cdd8-4464-abf9-8035bc233d2f.png} +0 -0
  95. /kotonebot/kaa/sprites/{d81b7022-5c81-4533-b949-7e9d75a5b8b4.png → 9e7bf71b-fe8d-43cf-8bdd-6cfb1fb1b597.png} +0 -0
  96. /kotonebot/kaa/sprites/{2dab2877-c6c3-45d9-849f-fb2d79b7b74e.png → a043ed15-0ceb-49b5-b3df-d03274677340.png} +0 -0
  97. /kotonebot/kaa/sprites/{6582463d-b4fa-40a1-b771-664c7f71fe9c.png → a200b1e4-2ebc-4c15-bdf2-2575408877f8.png} +0 -0
  98. /kotonebot/kaa/sprites/{9449ff36-7adb-42d5-b89d-bf9147d62811.png → a718a6f9-db30-4a9c-9d2b-b83055cf36ae.png} +0 -0
  99. /kotonebot/kaa/sprites/{966bcfd4-fefc-4704-907d-45bc6098d3f4.png → a7ada2b7-1366-40c8-864e-fbb42d248124.png} +0 -0
  100. /kotonebot/kaa/sprites/{b6f5243b-cfb4-42d2-b4eb-2fd1a9d33ab7.png → aa42da27-2c6a-4731-9678-edd3aefde4a7.png} +0 -0
  101. /kotonebot/kaa/sprites/{0002785c-3caa-4c8f-8d47-f29aee04a588.png → aaa770da-fc42-4e4a-978c-8fef22c0ebf9.png} +0 -0
  102. /kotonebot/kaa/sprites/{83f9e9a0-54dd-4601-8e54-3091c2892e67.png → af54e00c-b768-4497-829b-6bfac16f4efc.png} +0 -0
  103. /kotonebot/kaa/sprites/{0554264f-0474-44d0-9209-8135d8840c53.png → afe94aea-47e2-4310-8e25-3e7cadc5a75d.png} +0 -0
  104. /kotonebot/kaa/sprites/{0a4c6cbe-f42e-4301-9c1a-101fc33421d2.png → b0a88b9e-358f-4f35-b823-d6c025a516cf.png} +0 -0
  105. /kotonebot/kaa/sprites/{b25627d6-3352-4fe8-93c2-b653efe104d4.png → b4ede50d-7edb-4461-bee6-77d13456fa30.png} +0 -0
  106. /kotonebot/kaa/sprites/{f5727018-9a23-40de-840e-610d6e5dfa9d.png → b503e883-c9d2-46c0-9de2-158770abb32b.png} +0 -0
  107. /kotonebot/kaa/sprites/{92a42da1-d8d2-4233-b6d0-5997a72f3d03.png → b60b3563-20b4-46ad-b36b-3113d9e07d4c.png} +0 -0
  108. /kotonebot/kaa/sprites/{67f00dd1-86c9-4a49-a37c-87879171a46a.png → b9ded3ea-9701-441d-a593-e73e44d5fa3f.png} +0 -0
  109. /kotonebot/kaa/sprites/{be83e205-8ec5-452f-b42b-b98156516aa8.png → b9f285e4-eb97-47f0-9ca5-28ca558acf58.png} +0 -0
  110. /kotonebot/kaa/sprites/{6cacdb8f-2ea3-4e3c-a124-b957b75ea427.png → bbee032e-7fc1-4b4d-b1db-cc54b24c20c8.png} +0 -0
  111. /kotonebot/kaa/sprites/{401966c8-2095-4eef-b92a-764122de02d9.png → bc68fbda-8e6d-4368-b322-49a6854d81e3.png} +0 -0
  112. /kotonebot/kaa/sprites/{12151e09-e5f1-4b1d-a211-63cb300cb082.png → bf8d6419-472c-4941-8d69-9bb01af5c71a.png} +0 -0
  113. /kotonebot/kaa/sprites/{9d80c1ef-0f42-4622-ab9a-bfcc077dace6.png → c3548011-dc57-4542-a855-1e7f9d7762f7.png} +0 -0
  114. /kotonebot/kaa/sprites/{8fb17c7f-778d-4cd5-8d2f-dbf21d264297.png → c46f1705-b4d5-4f39-b138-391a85fb0302.png} +0 -0
  115. /kotonebot/kaa/sprites/{f58c3a84-60ea-415b-ac63-4b534dc8cb6c.png → c58be1dd-1981-42ee-8de3-e365102884e5.png} +0 -0
  116. /kotonebot/kaa/sprites/{dd699396-5500-43ad-8470-cf7a8ba013ec.png → c8321b5a-8f65-4465-892a-a3432efba5ac.png} +0 -0
  117. /kotonebot/kaa/sprites/{e89c23b0-ca58-49d1-b439-967a4a4a431d.png → c95ee1bb-1e53-4568-ba92-9606071ad3a6.png} +0 -0
  118. /kotonebot/kaa/sprites/{e04331fe-d62e-4f77-953d-78515ee5686e.png → ca9f52b1-42c0-4091-bc29-efc0da9606e0.png} +0 -0
  119. /kotonebot/kaa/sprites/{d56feb26-d560-423f-b5f8-dc06f7a3c8a1.png → ccba7903-9882-4982-ab84-355667d8419a.png} +0 -0
  120. /kotonebot/kaa/sprites/{e4a92c92-0974-40e0-b488-16ea7a4c1a29.png → d0dd43b7-5571-4e47-af51-796b4a6a1cfe.png} +0 -0
  121. /kotonebot/kaa/sprites/{e075c8cb-7eef-47cf-b9fe-9e3d1bd98e85.png → d274bf4d-f4ff-4270-9a5f-87685a0c6817.png} +0 -0
  122. /kotonebot/kaa/sprites/{64298c97-baac-48b9-be7d-cb14091aa3cb.png → d3565383-91b0-4b33-87a9-3468dfd56e52.png} +0 -0
  123. /kotonebot/kaa/sprites/{c3562fef-44f7-43d2-a4e6-e7ee21f8bdc5.png → d552db90-8e22-427c-b004-1799adbcc6ba.png} +0 -0
  124. /kotonebot/kaa/sprites/{681157d7-b37f-442f-b784-86fa9029ecdb.png → d5943dc2-12df-42bb-84bc-d6958260cb75.png} +0 -0
  125. /kotonebot/kaa/sprites/{10d9a788-24a2-42e1-9284-78f507986606.png → d5be0aac-6f00-4961-b21c-4075bd6ca528.png} +0 -0
  126. /kotonebot/kaa/sprites/{c5774fb4-be11-4b28-8f58-299ae8872cc1.png → d65cf124-6c8e-41e4-80dc-0c63b41d5636.png} +0 -0
  127. /kotonebot/kaa/sprites/{9a9d9398-15df-46ea-a247-04ba01f61603.png → d79069c1-3b8e-4df7-8b14-4eeaa44241e1.png} +0 -0
  128. /kotonebot/kaa/sprites/{5d3b3a20-89bb-4cf2-9973-25581c32e91c.png → db3ab847-948d-4ee0-b5cb-c57c0caa24fd.png} +0 -0
  129. /kotonebot/kaa/sprites/{610ea09a-d623-428f-ac97-1b51dc5e9202.png → dbc449e9-404e-435b-8b0f-3c853c7f0efe.png} +0 -0
  130. /kotonebot/kaa/sprites/{25f18ff9-dbae-4aed-87b4-c05ca6c4ebf4.png → dc3f2602-1f20-460a-b408-693001aa70bc.png} +0 -0
  131. /kotonebot/kaa/sprites/{f217d7cf-acf5-44eb-9f99-025bbcaea866.png → dcb63213-c81e-4eb7-82f1-a16a838299fe.png} +0 -0
  132. /kotonebot/kaa/sprites/{bcc433e0-8a4e-455f-b625-4583cea19c1c.png → df004f6b-683d-41e8-848f-2a838c585f43.png} +0 -0
  133. /kotonebot/kaa/sprites/{94021aa4-fb87-41e7-920a-988a360f8321.png → dfab89de-7365-4bc8-b332-6f62733123a2.png} +0 -0
  134. /kotonebot/kaa/sprites/{12d0271c-1a86-4d2c-b379-b7df847fe20b.png → e0a34a9a-69b6-4732-9b1c-7a2c6445cb76.png} +0 -0
  135. /kotonebot/kaa/sprites/{e281792b-000b-4048-afb7-e8bb0dbd88b3.png → e0cea27c-5b4e-4831-8fcf-65bccb9e5950.png} +0 -0
  136. /kotonebot/kaa/sprites/{a514ce10-bff1-4aa0-9625-bf560dcb8be5.png → e311e99e-ae64-442a-aed1-6fac29687d18.png} +0 -0
  137. /kotonebot/kaa/sprites/{9dfa46c9-54ec-4dd7-8f2e-e1e66c1206f1.png → e8e25d3c-569e-4eae-a707-3afa8c5f46ec.png} +0 -0
  138. /kotonebot/kaa/sprites/{951ae4be-40f3-4ccc-8578-77aca7f25eef.png → e9afeef0-fcbe-4d97-8b39-c57ab24a3f84.png} +0 -0
  139. /kotonebot/kaa/sprites/{8a2938ad-5657-4f66-8447-4bc7fa45b857.png → ec9656c3-a984-47db-8661-e1ae8751d288.png} +0 -0
  140. /kotonebot/kaa/sprites/{377857a9-c37f-4a90-afa9-00c4ff7b24ae.png → ee4862f3-f298-446e-a68b-bd97259052e6.png} +0 -0
  141. /kotonebot/kaa/sprites/{3e34e821-ae69-49aa-9d04-bc34b3037cd5.png → ef585824-7bfa-427a-a185-4317c0bcb4f6.png} +0 -0
  142. /kotonebot/kaa/sprites/{87c7532f-2394-403e-a6d8-7a216043ec13.png → ef861253-914d-436e-aa01-731a5dd11e38.png} +0 -0
  143. /kotonebot/kaa/sprites/{97a543a8-a859-4a1e-8e33-602f600db389.png → f0b983cd-8bce-4b67-9214-493364244c26.png} +0 -0
  144. /kotonebot/kaa/sprites/{143db8eb-fdde-4de0-a946-a14123b9262e.png → f2906fc0-9192-48ca-bc5d-52e922b04d8d.png} +0 -0
  145. /kotonebot/kaa/sprites/{f543861e-c3d5-4bc9-a677-47f9e86918ea.png → f3890caa-fa8b-43bc-ba30-82c5bbe1d12a.png} +0 -0
  146. /kotonebot/kaa/sprites/{d6314592-b8a4-4025-9875-b135bf986cf7.png → f4c3a6f9-1149-4530-af30-c56d7e3d02b9.png} +0 -0
  147. /kotonebot/kaa/sprites/{1f9f101b-2647-4d14-931e-7a8307495475.png → fa3bdcef-dfba-4cf2-a06f-e6078c07fb7d.png} +0 -0
  148. /kotonebot/kaa/sprites/{9e0492b7-3b66-48a2-b589-91e7fd16106d.png → fab770fd-e250-4dd4-b9d2-80966ad452ac.png} +0 -0
  149. /kotonebot/kaa/sprites/{f2d8a534-8afd-475c-ac20-738c7efffc90.png → fb2f308f-a025-4606-b789-0455c7cf0af8.png} +0 -0
  150. /kotonebot/kaa/sprites/{4622e955-7bb1-450d-a776-01543540fde3.png → fcc71fcd-b28e-4247-beb6-6f5422218c54.png} +0 -0
  151. /kotonebot/kaa/sprites/{04feeecc-a607-402d-bbc4-a71af87c7fc2.png → fe42018b-4987-4389-8d44-fb0cfd0f4dab.png} +0 -0
  152. {ksaa-2025.7.20.0.dist-info → ksaa-2025.7.27.0.dist-info}/WHEEL +0 -0
  153. {ksaa-2025.7.20.0.dist-info → ksaa-2025.7.27.0.dist-info}/entry_points.txt +0 -0
  154. {ksaa-2025.7.20.0.dist-info → ksaa-2025.7.27.0.dist-info}/licenses/LICENSE +0 -0
  155. {ksaa-2025.7.20.0.dist-info → ksaa-2025.7.27.0.dist-info}/top_level.txt +0 -0
@@ -12,9 +12,8 @@ from .cards import do_cards, CardDetectResult
12
12
  from ..actions.commu import handle_unread_commu
13
13
  from kotonebot.errors import UnrecoverableError
14
14
  from kotonebot.util import Countdown, Interval, cropped
15
- from kotonebot.backend.dispatch import DispatcherContext
15
+ from kotonebot.backend.loop import Loop
16
16
  from kotonebot.kaa.config import ProduceAction, RecommendCardDetectionMode
17
- from kotonebot.kaa.config import conf
18
17
  from ..produce.common import until_acquisition_clear, commu_event, fast_acquisitions
19
18
  from kotonebot import ocr, device, contains, image, regex, action, sleep, wait
20
19
  from ..produce.non_lesson_actions import (
@@ -705,8 +704,8 @@ ProduceStage = Literal[
705
704
  'unknown', # 未知场景
706
705
  ]
707
706
 
708
- @action('检测当前培育场景', dispatcher=True)
709
- def detect_produce_scene(ctx: DispatcherContext) -> ProduceStage:
707
+ @action('检测当前培育场景')
708
+ def detect_produce_scene() -> ProduceStage:
710
709
  """
711
710
  判断当前是培育的什么阶段,并开始 Regular 培育。
712
711
 
@@ -715,31 +714,35 @@ def detect_produce_scene(ctx: DispatcherContext) -> ProduceStage:
715
714
  """
716
715
  logger.info("Detecting current produce stage...")
717
716
 
718
- # 行动场景
719
- texts = ocr.ocr()
720
- if (
721
- image.find_multi([
722
- R.InPurodyuusu.TextPDiary, # 普通周
723
- R.InPurodyuusu.ButtonFinalPracticeDance # 离考试剩余一周
724
- ])
725
- ):
726
- logger.info("Detection result: At action scene.")
727
- ctx.finish()
728
- return 'action'
729
- elif texts.where(regex('CLEARまで|PERFECTまで')):
730
- logger.info("Detection result: At practice ongoing.")
731
- ctx.finish()
732
- return 'practice-ongoing'
733
- elif is_exam_scene():
734
- logger.info("Detection result: At exam scene.")
735
- ctx.finish()
736
- return 'exam-ongoing'
737
- else:
738
- if fast_acquisitions():
739
- return 'unknown'
740
- if commu_event():
741
- return 'unknown'
742
- return 'unknown'
717
+ for _ in Loop():
718
+ # 行动场景
719
+ texts = ocr.ocr()
720
+ if (
721
+ image.find_multi([
722
+ R.InPurodyuusu.TextPDiary, # 普通周
723
+ R.InPurodyuusu.ButtonFinalPracticeDance # 离考试剩余一周
724
+ ])
725
+ ):
726
+ logger.info("Detection result: At action scene.")
727
+ return 'action'
728
+ elif texts.where(regex('CLEARまで|PERFECTまで')):
729
+ logger.info("Detection result: At practice ongoing.")
730
+ return 'practice-ongoing'
731
+ elif is_exam_scene():
732
+ logger.info("Detection result: At exam scene.")
733
+ return 'exam-ongoing'
734
+ else:
735
+ if fast_acquisitions():
736
+ # 继续循环检测
737
+ pass
738
+ elif commu_event():
739
+ # 继续循环检测
740
+ pass
741
+ else:
742
+ return 'unknown'
743
+ # 如果没有返回,说明需要继续检测
744
+ sleep(0.5) # 等待一段时间再重新检测
745
+ return 'unknown'
743
746
 
744
747
  @action('开始 Hajime 培育')
745
748
  def hajime_from_stage(stage: ProduceStage, type: Literal['regular', 'pro', 'master'], week: int):
@@ -15,6 +15,7 @@ from kotonebot.kaa.game_ui.idols_overview import locate_idol, match_idol
15
15
  from ..produce.in_purodyuusu import hajime_pro, hajime_regular, hajime_master, resume_pro_produce, resume_regular_produce, \
16
16
  resume_master_produce
17
17
  from kotonebot import device, image, ocr, task, action, sleep, contains, regex
18
+ from kotonebot.kaa.errors import IdolCardNotFoundError
18
19
 
19
20
  logger = logging.getLogger(__name__)
20
21
 
@@ -58,7 +59,7 @@ def select_idol(skin_id: str):
58
59
  # 选择偶像
59
60
  pos = locate_idol(skin_id)
60
61
  if pos is None:
61
- raise ValueError(f"Idol {skin_id} not found.")
62
+ raise IdolCardNotFoundError(skin_id)
62
63
  # 确认
63
64
  it.reset()
64
65
  while btn_confirm := image.find(R.Common.ButtonConfirmNoIcon):
@@ -12,6 +12,7 @@ from .actions.scenes import at_home, goto_home
12
12
  from .actions.commu import handle_unread_commu
13
13
  from kotonebot.errors import GameUpdateNeededError
14
14
  from kotonebot import task, action, sleep, device, image, ocr, config
15
+ from kotonebot.backend.context.context import vars
15
16
 
16
17
  logger = logging.getLogger(__name__)
17
18
 
@@ -170,6 +171,7 @@ def windows_launch():
170
171
  # 等待游戏窗口出现
171
172
  it = Interval()
172
173
  while True:
174
+ vars.flow.check()
173
175
  if ahk.find_window(title='gakumas', title_match_mode=3):
174
176
  logger.debug('Game window found.')
175
177
  break
kotonebot/ui/user.py CHANGED
@@ -4,6 +4,7 @@ import time
4
4
 
5
5
  import cv2
6
6
  from cv2.typing import MatLike
7
+ from win11toast import toast
7
8
 
8
9
  from .pushkit import Wxpusher
9
10
  from .. import logging
@@ -25,17 +26,6 @@ def retry(func):
25
26
  continue
26
27
  return wrapper
27
28
 
28
- def ask(
29
- question: str,
30
- options: list[str],
31
- *,
32
- timeout: float = -1,
33
- ) -> bool:
34
- """
35
- 询问用户
36
- """
37
- raise NotImplementedError
38
-
39
29
  def _save_local(
40
30
  title: str,
41
31
  message: str,
@@ -74,6 +64,43 @@ def push(
74
64
  logger.warning('push remote message failed: %s', e)
75
65
  _save_local(title, message, images)
76
66
 
67
+ def _show_toast(title: str, message: str | None = None, buttons: list[str] | None = None):
68
+ """
69
+ 统一的 Toast 通知函数
70
+
71
+ :param title: 通知标题
72
+ :param message: 通知消息内容
73
+ :param buttons: 按钮列表,如果提供则显示带按钮的通知
74
+ """
75
+ try:
76
+ if buttons:
77
+ logger.verbose('showing toast notification with buttons: %s - %s', title, message or '')
78
+ toast(title, message or '', buttons=buttons)
79
+ else:
80
+ # 如果没有 message,只显示 title
81
+ if message:
82
+ logger.verbose('showing toast notification: %s - %s', title, message)
83
+ toast(title, message)
84
+ else:
85
+ logger.verbose('showing toast notification: %s', title)
86
+ toast(title)
87
+ except Exception as e:
88
+ logger.warning('toast notification failed: %s', e)
89
+
90
+ def ask(
91
+ question: str,
92
+ options: list[tuple[str, str]],
93
+ *,
94
+ timeout: float = -1,
95
+ ) -> str:
96
+ """
97
+ 询问用户
98
+ """
99
+ # 将选项转换为按钮列表
100
+ buttons = [option[1] for option in options]
101
+ _show_toast("琴音小助手询问", question, buttons=buttons)
102
+ raise NotImplementedError
103
+
77
104
  def info(
78
105
  title: str,
79
106
  message: str | None = None,
@@ -83,6 +110,7 @@ def info(
83
110
  ):
84
111
  logger.info('user.info: %s', message)
85
112
  push('KAA:' + title, message, images=images)
113
+ _show_toast('KAA:' + title, message)
86
114
 
87
115
  def warning(
88
116
  title: str,
@@ -98,7 +126,8 @@ def warning(
98
126
  :param once: 每次运行是否只显示一次。
99
127
  """
100
128
  logger.warning('user.warning: %s', message)
101
- push("KAA 警告:" + title, message, images=images)
129
+ push("琴音小助手警告:" + title, message, images=images)
130
+ _show_toast("琴音小助手警告:" + title, message)
102
131
 
103
132
  def error(
104
133
  title: str,
@@ -111,4 +140,5 @@ def error(
111
140
  错误信息。
112
141
  """
113
142
  logger.error('user.error: %s', message)
114
- push("KAA 错误:" + title, message, images=images)
143
+ push("琴音小助手错误:" + title, message, images=images)
144
+ _show_toast("琴音小助手错误:" + title, message)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ksaa
3
- Version: 2025.7.20.0
3
+ Version: 2025.7.27.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
@@ -26,6 +26,7 @@ Requires-Dist: onnxruntime==1.14.0
26
26
  Requires-Dist: numpy<2.0
27
27
  Requires-Dist: pywin32==310
28
28
  Requires-Dist: ahk==1.8.3
29
+ Requires-Dist: win11toast==0.35
29
30
  Dynamic: license-file
30
31
 
31
32
  # Kotone's Auto Assistant 琴音小助手