ksaa 2025.8.23.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.
- kotonebot/kaa/main/gr.py +122 -52
- kotonebot/kaa/metadata.py +34 -0
- kotonebot/kaa/resources/__pycache__/__init__.cpython-310.pyc +0 -0
- kotonebot/kaa/resources/game.db +0 -0
- kotonebot/kaa/resources/game_ver.txt +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-013_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-013_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-014_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-015_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-015_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-hmsz-3-012_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-hmsz-3-012_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-014_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-014_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-014_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-014_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-014_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-014_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-013_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-013_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-013_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-013_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-013_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-013_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-014_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-014_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-014_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-014_1.png +0 -0
- kotonebot/kaa/sprites/9483fae5-3a72-4684-9403-d25d2c602d3d.png +0 -0
- kotonebot/kaa/sprites/eaad330d-4e50-4b55-be2c-8da0f72764d9.png +0 -0
- kotonebot/kaa/tasks/R.py +130 -126
- kotonebot/kaa/tasks/actions/scenes.py +2 -0
- kotonebot/kaa/tasks/produce/cards.py +3 -0
- kotonebot/kaa/tasks/produce/common.py +88 -0
- kotonebot/kaa/tasks/produce/non_lesson_actions.py +12 -6
- kotonebot/kaa/tasks/produce/produce.py +33 -52
- {ksaa-2025.8.23.0.dist-info → ksaa-2025.9b1.dist-info}/METADATA +4 -2
- {ksaa-2025.8.23.0.dist-info → ksaa-2025.9b1.dist-info}/RECORD +168 -144
- /kotonebot/kaa/sprites/{1dd337ca-20f1-4dc6-8254-235d7ec74158.png → 002e7b92-11f4-487a-af55-334663e2b8cd.png} +0 -0
- /kotonebot/kaa/sprites/{3997a0e3-0826-4b1e-b7e9-4a36ebaaa9e8.png → 003c315c-418c-410e-ba45-290150097a25.png} +0 -0
- /kotonebot/kaa/sprites/{6bb37f56-bac2-4852-82b0-e9b65ce0cbe8.png → 01106370-2321-4696-a60e-dc76b565a097.png} +0 -0
- /kotonebot/kaa/sprites/{3675c4aa-a208-47d1-bbcb-48bce40e6ae9.png → 0519d61c-0451-42a2-96ed-baa5ef026655.png} +0 -0
- /kotonebot/kaa/sprites/{7ff80aa1-94c3-417e-9fae-3c2f2b8036a8.png → 0c2a1e9f-85be-4fec-a8ae-4e417c58d5a5.png} +0 -0
- /kotonebot/kaa/sprites/{3746df74-fe63-442c-85d2-8a3696cb2fcd.png → 0d1ecf0b-b090-42b2-b895-cb1f5b415af8.png} +0 -0
- /kotonebot/kaa/sprites/{30ce2e03-e9b3-4b4f-aded-51a05bfca91f.png → 0d39671a-cfa3-4832-93e8-6ab61cece799.png} +0 -0
- /kotonebot/kaa/sprites/{ae1a5e05-d53d-43aa-9f27-b9117483d19e.png → 0ffd0b92-78f6-4661-a2c3-3c337b75d3bb.png} +0 -0
- /kotonebot/kaa/sprites/{25ceaa36-a432-4bf3-80b7-11c94cd82357.png → 105df024-ece9-4c9c-9479-9f7423f4abec.png} +0 -0
- /kotonebot/kaa/sprites/{a04c4402-e071-401a-9549-d573eabc0e59.png → 112f47b8-e71f-426f-9081-0c8efb6ced72.png} +0 -0
- /kotonebot/kaa/sprites/{359d6d34-ea55-470b-b682-6c9252953e8d.png → 11c5034e-d258-422d-850c-a4495b346778.png} +0 -0
- /kotonebot/kaa/sprites/{67da7040-7183-4d30-89a7-e78345f42948.png → 12d59cc0-cef6-472d-b424-edaae52463ca.png} +0 -0
- /kotonebot/kaa/sprites/{5fb96a83-7b37-435b-9d7e-9caf0bc022e4.png → 13338d14-2b0d-4630-a5d2-dc273f62524e.png} +0 -0
- /kotonebot/kaa/sprites/{9b0f6620-5fd0-4393-ae67-555baf171550.png → 13a5d0e7-776e-40c2-8a52-dd3e016913b4.png} +0 -0
- /kotonebot/kaa/sprites/{5528a0a0-2f1e-41f8-b55f-a565a2f80908.png → 156cb3bd-0523-4a76-8747-8d4ce23fed7b.png} +0 -0
- /kotonebot/kaa/sprites/{6aa1fbb0-3880-49e1-ade3-29f627d0e38b.png → 16d914f3-c3be-479e-932a-4c336c08b94e.png} +0 -0
- /kotonebot/kaa/sprites/{7a54f094-bc75-48d3-8253-cca80a7052a2.png → 1b39e16c-d8e2-4f4c-bc6d-a4511184f8af.png} +0 -0
- /kotonebot/kaa/sprites/{8c9c9195-4eed-407c-b1ab-bb616c7b2acc.png → 1b82310e-8422-4be6-b31b-bc7693def4e4.png} +0 -0
- /kotonebot/kaa/sprites/{ca680286-0937-46e1-8b4d-ee900baed756.png → 1d25aa70-8137-4c63-8dcf-a5b5a8f950e6.png} +0 -0
- /kotonebot/kaa/sprites/{ceb4fae9-b5e5-41cf-856b-bcf753f477d9.png → 1e324ce8-b56f-45d5-9476-713dabfdecf9.png} +0 -0
- /kotonebot/kaa/sprites/{04b33e1f-a341-46d4-a54b-a05f1e765c10.png → 22bda7ef-ad0d-4020-a667-6ae77b4805ca.png} +0 -0
- /kotonebot/kaa/sprites/{a1bae28b-7b90-4009-b384-79f7a8974078.png → 23a39277-a6ac-4a49-9c6a-1fca1a3a4d9b.png} +0 -0
- /kotonebot/kaa/sprites/{b5ecb8e2-8b1a-4240-a2c9-152ccecdacbe.png → 23b37aad-1de3-43e2-84e6-78f6f0f28fba.png} +0 -0
- /kotonebot/kaa/sprites/{cf8b2ae3-f948-4204-b7da-c0801f1368f4.png → 23f8844e-9272-4a5c-badf-a30676fd22da.png} +0 -0
- /kotonebot/kaa/sprites/{146c742a-0fb3-4d88-851e-ddd621533ad3.png → 24458a04-ca4d-4330-9dd6-f074feac9a17.png} +0 -0
- /kotonebot/kaa/sprites/{a898c01d-1347-484f-b2b0-10858a1ef3a6.png → 246f9799-5367-4fb4-877d-821fb4acad71.png} +0 -0
- /kotonebot/kaa/sprites/{9f41a6b4-2955-4105-8610-423f267807de.png → 24d55c2b-dfe8-4a80-9f39-94045478f5a5.png} +0 -0
- /kotonebot/kaa/sprites/{9fb0f700-1eaf-4677-bd1f-05f9f311cdfc.png → 26262f2d-e12b-4992-8c14-15679cae4298.png} +0 -0
- /kotonebot/kaa/sprites/{6d58dbfa-84e2-4a84-8c7c-133e459e9b40.png → 2704de68-4349-4695-8102-4dcd93fe82c7.png} +0 -0
- /kotonebot/kaa/sprites/{4d0f75f5-632b-4c59-88a5-058622a4c3af.png → 279ab0e2-1601-4bfb-8d27-4019fc4dcd3d.png} +0 -0
- /kotonebot/kaa/sprites/{4f2fcec7-399e-4184-b1dc-eabae92d63dd.png → 2ad65f0c-3b9c-46ad-808e-11c6d6db7417.png} +0 -0
- /kotonebot/kaa/sprites/{276239b5-e41b-4ae5-9be6-37d251292d39.png → 2b3a82fd-79b3-400c-988a-248a7b277542.png} +0 -0
- /kotonebot/kaa/sprites/{ad455e8e-fb2f-4180-af29-7ef66c98daa9.png → 37d24544-1791-474d-8f74-b1dbe0dd3c6b.png} +0 -0
- /kotonebot/kaa/sprites/{9e5afe22-f817-45f7-b0dd-2c808adff8cb.png → 3868b12d-8d93-4754-91bd-797680d24e22.png} +0 -0
- /kotonebot/kaa/sprites/{5fb7c821-63b4-4ee2-b6ea-16eec3a77251.png → 3de9bd37-90ef-45ec-88c0-03c4fd50fb51.png} +0 -0
- /kotonebot/kaa/sprites/{2fa084f5-0637-4d53-ada8-9c542d597a51.png → 46198a1d-888e-4a12-827e-51cdd4fc30a2.png} +0 -0
- /kotonebot/kaa/sprites/{fa72809a-d057-40a0-b771-f4d96bc1ced2.png → 49587e50-e978-461f-b49c-7f92347923f5.png} +0 -0
- /kotonebot/kaa/sprites/{bc393fa9-317c-48f9-88cf-cd4d93af1569.png → 4af83157-f237-4072-a732-1e59814485e7.png} +0 -0
- /kotonebot/kaa/sprites/{1a06449d-472e-4c06-9dc1-1cb06b1b1ce5.png → 4b595d09-a5ed-47d6-9c7b-e471792db801.png} +0 -0
- /kotonebot/kaa/sprites/{8a62a66d-4b66-42d5-b004-b56eb7c45d68.png → 4e284d43-9d58-4afa-be66-b61825ef2be3.png} +0 -0
- /kotonebot/kaa/sprites/{bdc3b84b-18a4-4abe-938d-3e6495bef7eb.png → 50f138f4-7500-42c1-8121-2f03703d8f8f.png} +0 -0
- /kotonebot/kaa/sprites/{e2a98bd2-56d1-47e9-806a-a36d06bd3f16.png → 53d082f9-9cac-4ca0-b166-3a3599c4f757.png} +0 -0
- /kotonebot/kaa/sprites/{bfa4b6bf-c032-46b8-9ce3-268717e4e364.png → 5479a383-3e75-4082-a118-fdae784228f4.png} +0 -0
- /kotonebot/kaa/sprites/{1e17f7b1-4f64-474c-aade-4b3de32c0de4.png → 564e9739-a90d-4c17-9d29-b3edb6aef1e9.png} +0 -0
- /kotonebot/kaa/sprites/{8bad2dbc-9f3a-443f-a3ff-048e70577a97.png → 5aac4900-ccd2-4a72-9135-0804fe14e6e2.png} +0 -0
- /kotonebot/kaa/sprites/{72a9238a-de6d-4665-85d4-265180d00db2.png → 5c926d27-63c7-466f-9e34-65144153e0d2.png} +0 -0
- /kotonebot/kaa/sprites/{fcbeb870-6853-4e2c-8a6e-54b4787e3a2e.png → 5d51ee71-a2fb-414a-ab48-c5d3c1a3b945.png} +0 -0
- /kotonebot/kaa/sprites/{06df0c16-bb7e-41b7-90fe-afc14379b90f.png → 62390db3-c5bc-4868-bfb3-958acceff9cd.png} +0 -0
- /kotonebot/kaa/sprites/{35f613e8-61af-41b0-a397-44ae7566a233.png → 634b1421-7f65-452c-a4e2-e40a5028938a.png} +0 -0
- /kotonebot/kaa/sprites/{2227a4ac-a933-4165-b594-2720a26f9e44.png → 6588da9e-a9b5-4313-9f67-e03f213f3fa4.png} +0 -0
- /kotonebot/kaa/sprites/{36039a1a-52e6-428d-9866-0f0f65a7298f.png → 66eee7a5-3d0e-430f-850b-7fff14b3671f.png} +0 -0
- /kotonebot/kaa/sprites/{3a41fe06-7f33-4c21-9edd-291191e3c563.png → 67176e48-eaa5-46dd-bbaf-85b1b324ba48.png} +0 -0
- /kotonebot/kaa/sprites/{0e332904-cace-4d02-9575-100a359c548f.png → 6774c674-5100-4422-a82b-deb9bd5d49ee.png} +0 -0
- /kotonebot/kaa/sprites/{6a272201-1311-41ee-b296-0a8d812d8173.png → 6e9ef52c-937f-47f1-9687-899a528d7599.png} +0 -0
- /kotonebot/kaa/sprites/{658eb246-1469-4a86-b7a7-5e66b3102084.png → 704bf40a-4125-4260-9dd7-fa8ac13f00df.png} +0 -0
- /kotonebot/kaa/sprites/{80ae6f18-cc26-4b31-9202-b5a0656b23ce.png → 71bbe862-b9f7-47ab-b4f1-f0b87732bd39.png} +0 -0
- /kotonebot/kaa/sprites/{229366ae-dbcd-4378-84a2-8a7eb1d1e084.png → 7516da41-7cbf-4c18-8630-3baecc225764.png} +0 -0
- /kotonebot/kaa/sprites/{12f47930-f691-4a3e-8c83-e47f63fb1f2b.png → 75f0339c-9acf-4971-a3c2-e302f56b1f93.png} +0 -0
- /kotonebot/kaa/sprites/{b6cda449-d5ab-4a38-9c85-c25e1b73f588.png → 76a65fb7-4429-4288-a164-bd121974ee6b.png} +0 -0
- /kotonebot/kaa/sprites/{dfe926f6-a3b3-48c2-9ebd-757f77d932a6.png → 783cbcad-eefc-4a04-910e-9ff4288d3c18.png} +0 -0
- /kotonebot/kaa/sprites/{651b2464-0c4a-4f3d-9452-5a40897b39e1.png → 78a12e3b-ac32-4e96-8998-30f92318a36b.png} +0 -0
- /kotonebot/kaa/sprites/{8b3cfcfc-fa00-4bc5-9ea4-b350f2c08cb0.png → 7cddb93a-175c-4875-a2fb-136cdfc365a7.png} +0 -0
- /kotonebot/kaa/sprites/{ef21cbe1-7263-4a68-ad8c-b9aac503978a.png → 7d817b98-53ff-491c-b608-b07a0c143009.png} +0 -0
- /kotonebot/kaa/sprites/{c89ce004-a437-4b94-9420-0d9bf2ed7e25.png → 8034f626-ae01-42c0-8f73-a3d1c9aaff5c.png} +0 -0
- /kotonebot/kaa/sprites/{b5a883c1-8086-4c60-a789-a7819c674645.png → 824c9efd-21ea-4e26-a1fa-9e909d8b98d6.png} +0 -0
- /kotonebot/kaa/sprites/{47d9fac4-2caf-4479-a97a-e519ddbfb3cf.png → 835e3ad1-8f73-4e2e-bdd5-9a5fb866858f.png} +0 -0
- /kotonebot/kaa/sprites/{7b8541a8-9e82-410b-b053-3ebc96b36604.png → 84795df2-e6d9-40fb-aef5-98fbf9c17399.png} +0 -0
- /kotonebot/kaa/sprites/{04622143-7f9e-47a8-86a5-be2b81d13cb6.png → 848c8b04-c953-473d-94b1-2a2d5cdbd9c4.png} +0 -0
- /kotonebot/kaa/sprites/{fa1eea22-b329-4c1c-8446-279c542f6da0.png → 8498ac20-4ec2-474b-961f-cbf488da9a23.png} +0 -0
- /kotonebot/kaa/sprites/{288a0541-a175-47b4-b75c-2e845e27cba6.png → 85f1cf4f-7d07-403a-917b-02b273680c21.png} +0 -0
- /kotonebot/kaa/sprites/{795961a5-78c5-4ac4-a250-b1879cd2f60d.png → 86db7d47-f634-4be4-b9e2-371e7868aded.png} +0 -0
- /kotonebot/kaa/sprites/{00707545-6ed3-4c3a-9c84-89cb75ac1adc.png → 88d89e04-2242-4ed7-be23-edd6535121ac.png} +0 -0
- /kotonebot/kaa/sprites/{fc7b1cdb-d0d0-4470-b5fd-218a8551dc9f.png → 8cb9d744-6b49-452b-b0b6-e441446050ef.png} +0 -0
- /kotonebot/kaa/sprites/{ed081194-272d-461a-93a1-ec476a896753.png → 8df4515c-ff60-432c-a624-ae3658bf7e0c.png} +0 -0
- /kotonebot/kaa/sprites/{57cee3e6-eee4-4023-85f3-52959fa372a0.png → 8e6b9237-f94a-4e21-9b2c-45e3d4833b6d.png} +0 -0
- /kotonebot/kaa/sprites/{f47d8096-63bf-42ed-8f4f-5f6f1d8772f4.png → 8e7b53fd-d962-43b7-a203-3d480c649c83.png} +0 -0
- /kotonebot/kaa/sprites/{45abba60-06d7-4921-b2a2-9ce790c2b25b.png → 8ed3f006-facb-4ba0-9034-24a3a7729012.png} +0 -0
- /kotonebot/kaa/sprites/{791e885e-6e27-498f-81ff-87a40582507d.png → 91e2c2d3-b629-4c49-97d5-ed99dada3243.png} +0 -0
- /kotonebot/kaa/sprites/{65dbaa8c-2053-4441-9c31-8fd8fc8c87d8.png → 92c1a9ba-994b-4635-b1b6-1fa157f227f6.png} +0 -0
- /kotonebot/kaa/sprites/{0bd59a8f-6fbd-4c92-8c1e-1d58716b6d84.png → 981e63c5-d615-44dd-9ad6-60f6b415cdaf.png} +0 -0
- /kotonebot/kaa/sprites/{7eff6c59-a7ed-43d5-8b67-083127e9e748.png → 98a8e860-39cf-416c-b435-64a33579c6e8.png} +0 -0
- /kotonebot/kaa/sprites/{78e27204-2544-419d-b66e-e9e7244f4460.png → 9932dfd8-7c97-47dd-b6bb-e8c8d593f762.png} +0 -0
- /kotonebot/kaa/sprites/{62676c2c-814a-4d8b-9bb2-232c3b434287.png → 9a275932-f760-4373-ab27-86c5caf19136.png} +0 -0
- /kotonebot/kaa/sprites/{b9e687ca-ba44-4aa1-a282-b7da6cffb2ba.png → 9a7f06a5-448b-4410-84fa-0a4c938620f7.png} +0 -0
- /kotonebot/kaa/sprites/{db86f5a5-0272-4a74-893e-077acbbecf23.png → 9cdd7af5-0e25-4226-8c7b-93c8c633c27b.png} +0 -0
- /kotonebot/kaa/sprites/{c3d5a935-6e77-4751-a0b1-b1ac3a3edf0a.png → a0ddc404-a653-4d76-842f-faf7f93851ed.png} +0 -0
- /kotonebot/kaa/sprites/{c86250ac-bde0-45bb-b696-f8b94e2d2d3b.png → a1087827-1065-4f35-b04f-854ddf2d7e70.png} +0 -0
- /kotonebot/kaa/sprites/{5cd3481b-2388-4461-b525-c2f78050822f.png → a3f07286-a699-4f5c-9912-835b3781b4f7.png} +0 -0
- /kotonebot/kaa/sprites/{9a816f64-b16e-4e8a-b4d8-d056c31c85f1.png → a4aabbbe-6400-4bcb-a95f-32a7d611bf5b.png} +0 -0
- /kotonebot/kaa/sprites/{8bdcc43b-876d-451f-b300-67c16c6f5c9f.png → a4b50bf5-7dfe-4bbb-8bd7-528c9147b71e.png} +0 -0
- /kotonebot/kaa/sprites/{2ee5d498-1370-4f09-b187-41dbe582f498.png → a4c42000-2421-4b02-b83e-60e1397304b0.png} +0 -0
- /kotonebot/kaa/sprites/{9d9dd078-9bb3-4f5f-9ef5-63c203bf02c9.png → a8aacbc9-1238-414c-b1e6-5ea1a01407c2.png} +0 -0
- /kotonebot/kaa/sprites/{a18a08f5-c752-4fa4-a451-b48f5ca11360.png → a99307de-c12f-4cf5-921b-b80bf03bbac3.png} +0 -0
- /kotonebot/kaa/sprites/{a921b8d5-93b7-4346-9ae4-d2e1def1ec1a.png → ac02de52-42fa-4767-81f8-97fbac3bd8a0.png} +0 -0
- /kotonebot/kaa/sprites/{80fac9c6-e6de-4fb5-9543-77797ffcde7a.png → aee9d67f-d6be-4cf5-9c30-331f6d5f0f84.png} +0 -0
- /kotonebot/kaa/sprites/{2fc0a912-8d9b-48a3-b942-a25274c83edd.png → b45b4340-65ce-49df-a265-9f3cd876fced.png} +0 -0
- /kotonebot/kaa/sprites/{ccbbecec-5cf5-4f9f-8358-6b3408689234.png → b53035c7-43a6-4d83-a51c-dd6b7cd14a1e.png} +0 -0
- /kotonebot/kaa/sprites/{cf615078-aedf-46af-a94d-9328a16fbc13.png → b54343ba-8b17-4d72-b379-805ae3062d86.png} +0 -0
- /kotonebot/kaa/sprites/{6a59aafc-4962-490e-8ab1-9ad59d22db3d.png → b94087df-db46-4ae3-bf93-8548a25a1a23.png} +0 -0
- /kotonebot/kaa/sprites/{03985ce5-781f-4c1b-8d49-c5f97010d5ff.png → bd101208-a87c-405c-987a-d46e1b6f0358.png} +0 -0
- /kotonebot/kaa/sprites/{98deb79d-e32b-4551-bc26-c4722d2b1307.png → be2c3ab5-9d63-47bc-93f1-110b9668d5e2.png} +0 -0
- /kotonebot/kaa/sprites/{aeff3068-5f5c-4685-a328-fe367d426c46.png → c41567a3-84bf-4e71-9eb1-f577c0348215.png} +0 -0
- /kotonebot/kaa/sprites/{c1504a57-77f0-46ca-a30b-162120489d5c.png → c5127f24-fa81-4d61-876f-ac0a377bf00e.png} +0 -0
- /kotonebot/kaa/sprites/{ccb8054c-345d-43c9-8b2c-7b2243ad6668.png → c542ba3e-e0c0-41a1-8cc7-dd7454b12400.png} +0 -0
- /kotonebot/kaa/sprites/{833ce8cb-01cd-4457-94b9-ff3f93d33f05.png → c6649b6a-7d03-454c-902b-7462092878df.png} +0 -0
- /kotonebot/kaa/sprites/{fd354169-e32a-45be-9a1e-da0136b91dc3.png → cf5dcb2b-c5bd-4e38-a2bb-2673db821f79.png} +0 -0
- /kotonebot/kaa/sprites/{f60a8a24-b358-4f3a-af2c-4e4a31c5d36e.png → d37153d2-f699-4608-abbf-43d6bd8b1469.png} +0 -0
- /kotonebot/kaa/sprites/{382cb218-9e58-406f-9a3b-a9d990fc0fff.png → d3bfc1c2-a202-42c2-9e19-61b949a340c7.png} +0 -0
- /kotonebot/kaa/sprites/{a975a75e-e774-481b-8ade-9b1229bc95dd.png → d5ad9b97-3175-4c49-a1f7-5da663125af3.png} +0 -0
- /kotonebot/kaa/sprites/{29449202-a6cc-4080-bb87-816481ec9506.png → d5c4ef47-257f-49a2-81e3-ba7ab6fa0f62.png} +0 -0
- /kotonebot/kaa/sprites/{94165d54-2c09-427f-9cb1-e23fa9b06a96.png → d7ceaf00-e488-4273-968c-315962bf4837.png} +0 -0
- /kotonebot/kaa/sprites/{a4935638-882c-4d3f-af77-e5888ad0b71e.png → d7e25596-8452-4eb3-aaa8-5997be3dd851.png} +0 -0
- /kotonebot/kaa/sprites/{7533e4fd-e411-4386-a0fb-aa8f2cbeb216.png → db4ca499-5cd3-4332-b232-28ddbedd4741.png} +0 -0
- /kotonebot/kaa/sprites/{f0370809-4383-4039-b8ec-f80a9216a7b3.png → e0effef4-869d-4a0c-8db3-1c41cd255555.png} +0 -0
- /kotonebot/kaa/sprites/{40fc17b0-718c-432d-b784-92a22c2f7512.png → e8407109-ffa8-496b-a499-e78db90db540.png} +0 -0
- /kotonebot/kaa/sprites/{ecc2500b-4916-4c47-a840-98233d53522b.png → e857f00d-81bd-4fbc-9043-c9252a075da3.png} +0 -0
- /kotonebot/kaa/sprites/{54e29f7f-c951-46a2-a068-6911dfcf1966.png → e872aa76-2947-4209-abd7-5ecb56fdc9d6.png} +0 -0
- /kotonebot/kaa/sprites/{77b0a64c-1e14-41d6-94af-8824982f2119.png → ea7dd69b-b02f-499d-acee-6bd35a033a73.png} +0 -0
- /kotonebot/kaa/sprites/{1b60b852-dc93-48a1-8b73-0d728d04e057.png → f1fcc488-584d-4c61-8489-8b1b539151a9.png} +0 -0
- /kotonebot/kaa/sprites/{cd8d48f2-77d2-4d0b-a81f-53a1549457e9.png → f62bfba7-3d6b-4bdd-9821-ca8370ee2ff4.png} +0 -0
- /kotonebot/kaa/sprites/{71e84fb3-9474-4bbc-8543-ffba5758dcc0.png → f7084b2c-5411-4180-9404-377240af1857.png} +0 -0
- /kotonebot/kaa/sprites/{1262d83a-8f2a-4f75-b70a-385a04d35ae1.png → f7c7f2cf-337b-4dd6-a90b-7f5c452a1640.png} +0 -0
- /kotonebot/kaa/sprites/{fb870576-1837-4267-bc0f-e0685bf7a136.png → fbba87fb-50e5-4c2f-9218-82f1ffb7a5ba.png} +0 -0
- /kotonebot/kaa/sprites/{4fd7d95e-7955-4a70-ad91-67a230c647a3.png → fc7e4b97-0d87-4de9-b7ac-87ca670b6ff2.png} +0 -0
- /kotonebot/kaa/sprites/{5b2e7826-0e1c-4fd8-965c-6a3498c59825.png → fe0a26ac-906c-4809-9de5-43cb4a467a9d.png} +0 -0
- /kotonebot/kaa/sprites/{08f593a9-d9eb-41ee-b2c0-010562e7ef10.png → ff232b25-39b4-4dcb-9e21-1d82b9e0bb7d.png} +0 -0
- {ksaa-2025.8.23.0.dist-info → ksaa-2025.9b1.dist-info}/WHEEL +0 -0
- {ksaa-2025.8.23.0.dist-info → ksaa-2025.9b1.dist-info}/entry_points.txt +0 -0
- {ksaa-2025.8.23.0.dist-info → ksaa-2025.9b1.dist-info}/licenses/LICENSE +0 -0
- {ksaa-2025.8.23.0.dist-info → ksaa-2025.9b1.dist-info}/top_level.txt +0 -0
|
@@ -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():
|
|
@@ -242,12 +242,18 @@ def is_rest_available():
|
|
|
242
242
|
def rest():
|
|
243
243
|
"""执行休息"""
|
|
244
244
|
logger.info("Rest for this week.")
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
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('
|
|
123
|
-
def
|
|
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
|
-
|
|
132
|
+
前置条件:培育中的任意一个页面\n
|
|
128
133
|
结束状态:游戏首页
|
|
134
|
+
|
|
135
|
+
:param mode: 培育模式
|
|
136
|
+
:param current_week: 培育的周数
|
|
129
137
|
"""
|
|
130
|
-
|
|
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(
|
|
@@ -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.
|
|
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.
|
|
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
|
|
@@ -110,7 +110,9 @@ kaa
|
|
|
110
110
|
因此你最好每次都在同一个地方运行 kaa,否则可能会出现找不到配置文件的情况。
|
|
111
111
|
|
|
112
112
|
## 开发
|
|
113
|
-
|
|
113
|
+
环境配置见 [DEVELOPMENT.md](./docs/DEVELOPMENT.md)。
|
|
114
|
+
|
|
115
|
+
开发指南见 [QUICK_START.md](./docs/GUIDE.md)。
|
|
114
116
|
|
|
115
117
|
## 贡献
|
|
116
118
|
欢迎 PR。
|