ksaa 2025.6.28.0__py3-none-any.whl → 2025.7.3.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.
- kotonebot/kaa/common.py +18 -0
- kotonebot/kaa/main/gr.py +259 -6
- kotonebot/kaa/metadata.py +10 -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-hmsz-3-005_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-hmsz-3-005_1.png +0 -0
- kotonebot/kaa/tasks/R.py +132 -132
- {ksaa-2025.6.28.0.dist-info → ksaa-2025.7.3.0.dist-info}/METADATA +1 -1
- {ksaa-2025.6.28.0.dist-info → ksaa-2025.7.3.0.dist-info}/RECORD +147 -145
- /kotonebot/kaa/sprites/{36d71d33-09c9-4be8-b184-ccf40f700333.png → 01ce8957-465d-4278-b297-f58b36c73285.png} +0 -0
- /kotonebot/kaa/sprites/{b003bef5-53db-4032-b1bd-d5075de365a8.png → 02048c24-3002-4122-b24b-15a2c2fb502f.png} +0 -0
- /kotonebot/kaa/sprites/{671b4a55-023a-434d-b29a-e844fe528e6b.png → 02de663b-a039-4530-b10b-fd5aea9f600e.png} +0 -0
- /kotonebot/kaa/sprites/{da7a329e-339e-4ee7-8775-bca505a1980d.png → 047454d6-9cbb-432d-b670-bde2d5f5fc9a.png} +0 -0
- /kotonebot/kaa/sprites/{35319890-98e3-4f75-b969-6b8576ef668d.png → 081ca89e-0f95-45e5-a855-5b7e49295af5.png} +0 -0
- /kotonebot/kaa/sprites/{64be274e-e8ad-4938-84c1-5d8aabcd10d8.png → 0a0dfcba-7ae4-415a-9361-7f3c4ec16ef9.png} +0 -0
- /kotonebot/kaa/sprites/{469c2b41-4171-4902-acc5-da0c807886ab.png → 0a586241-e005-45a6-b12f-eed8089d8fd8.png} +0 -0
- /kotonebot/kaa/sprites/{81526e97-1b8d-433f-a5c9-907e4e8c85cd.png → 0ad61c60-5458-400d-9788-437edb32608a.png} +0 -0
- /kotonebot/kaa/sprites/{5f0c2a57-efd0-4094-9f71-6f6fe97316f6.png → 0b452661-3720-4fa3-9e52-6fdc69517396.png} +0 -0
- /kotonebot/kaa/sprites/{55e4ef75-ba8e-4230-819c-450cf14b08cd.png → 0db398fd-3551-4a15-b734-ca5a7b54150f.png} +0 -0
- /kotonebot/kaa/sprites/{4d355e36-9169-43e4-bd58-2836ee3e56e0.png → 0e0686c7-9fe8-4f82-9d05-7922e55fc1a9.png} +0 -0
- /kotonebot/kaa/sprites/{9e369992-ea8c-4c15-88d3-1344319978b0.png → 109ff896-1f96-465a-ad6f-ef410789e140.png} +0 -0
- /kotonebot/kaa/sprites/{998fc84a-af71-4fa5-8aa4-e0bfeb9c53ea.png → 1140cce1-90e4-44cd-9acc-c2491841fbd4.png} +0 -0
- /kotonebot/kaa/sprites/{019273c4-22ce-486f-8a7d-dbc78f13dcac.png → 124fb25f-47ac-468d-97af-f90c9604f1c5.png} +0 -0
- /kotonebot/kaa/sprites/{c9d3699b-c8b1-4294-9b48-103df4ab6c65.png → 1470cd16-3340-4a0a-854f-3acf9b882cb1.png} +0 -0
- /kotonebot/kaa/sprites/{9f9003ba-468f-406f-a82f-1b7a23ef347c.png → 156d67bb-562c-42df-b55a-aea0b6ad71dd.png} +0 -0
- /kotonebot/kaa/sprites/{aacd229c-d307-4a20-a388-84d8f4afb4a5.png → 17608ef8-fe7c-4fc7-b811-a6c05e838881.png} +0 -0
- /kotonebot/kaa/sprites/{379d5084-637f-45e8-8bd8-789eaa919821.png → 1a4c5291-70a9-4923-aadf-f7e6a28c7aa5.png} +0 -0
- /kotonebot/kaa/sprites/{b641a122-4734-43e1-b22f-468464a0cff1.png → 1db583b2-c82a-4576-9ca9-b7409bc1ca95.png} +0 -0
- /kotonebot/kaa/sprites/{554c0ff6-0a05-419d-85f9-5ced260d0d2e.png → 1fc998a7-cfa2-4485-9742-1ae87306a9fc.png} +0 -0
- /kotonebot/kaa/sprites/{dedb8499-5881-4add-914f-ff0049285dae.png → 24cdb395-915e-4816-9406-efd1aafa70c1.png} +0 -0
- /kotonebot/kaa/sprites/{0f6d7f89-bdb2-4235-9b6b-e65cb73a4167.png → 25151748-2eb2-4f08-94f1-f1be2fbea3da.png} +0 -0
- /kotonebot/kaa/sprites/{7a9d1c39-b306-4cb0-be2f-7a5963099949.png → 25598023-8999-4737-9f3c-9da71bb88748.png} +0 -0
- /kotonebot/kaa/sprites/{c90b582c-8570-48b4-98c0-62d5b067ca2c.png → 26b9efc1-51be-4784-bf78-2b929abac650.png} +0 -0
- /kotonebot/kaa/sprites/{dff74cce-ba2d-44aa-b924-183259080a32.png → 276522a3-d8f0-4b0f-8ee5-dce3f2cb87a5.png} +0 -0
- /kotonebot/kaa/sprites/{fa80b14e-953f-44bd-a4ad-99aefd276fd7.png → 277035b5-7eee-4ca8-80dd-f73d78e7531f.png} +0 -0
- /kotonebot/kaa/sprites/{75a2093d-8743-427e-8d24-ae9a69fa14c1.png → 28ea2cc9-e9f2-4573-968a-0c88562c696a.png} +0 -0
- /kotonebot/kaa/sprites/{618b21ad-ab8b-436a-8eb8-bd320a198c9f.png → 28f44641-894d-4047-bc56-b932ac5a32a0.png} +0 -0
- /kotonebot/kaa/sprites/{a546e254-0490-43df-a291-a9a5c2b4c34a.png → 2a0e9656-26ba-4d7a-a414-6045e521b92c.png} +0 -0
- /kotonebot/kaa/sprites/{49b9a298-e847-4322-99a2-c0588c3542fe.png → 2a2770d2-7fd8-4bb0-89a7-c507046fc892.png} +0 -0
- /kotonebot/kaa/sprites/{9dcca89b-c92b-4708-8f19-facd40d09a65.png → 2b9fb35b-4a3b-440d-bcac-1eb1fdfe0e21.png} +0 -0
- /kotonebot/kaa/sprites/{eb8d208a-dbcc-43ca-a8ac-098e1005ebfa.png → 2fc3fa82-cc3d-4164-839f-d0bd7f8a32f5.png} +0 -0
- /kotonebot/kaa/sprites/{ffda716c-2903-4ec7-8c59-aab5b8ad10bb.png → 2fd135e1-8010-4a53-90a3-2a950c5a43bf.png} +0 -0
- /kotonebot/kaa/sprites/{20b01af5-907b-4d49-9f5b-a3700ca9c0c3.png → 3037118b-4a82-4cfc-ad95-db8a03f779d5.png} +0 -0
- /kotonebot/kaa/sprites/{e46e1b6d-6702-46bf-a07e-aec8d183453f.png → 33aaec9e-dccc-441a-b91a-4784f1eb4498.png} +0 -0
- /kotonebot/kaa/sprites/{613e9b10-b2eb-44ea-b6d9-9310c0e1bdcf.png → 359e43b3-6b85-4f8c-86a1-4d4c1ae75779.png} +0 -0
- /kotonebot/kaa/sprites/{818e2370-8fb9-4e6c-ab78-58e86d6525b5.png → 3a4e2e77-c49b-4f69-bfd1-19fbe4f5c9a5.png} +0 -0
- /kotonebot/kaa/sprites/{9ce7d48e-295d-47b2-96eb-f3ce697c1b37.png → 3bf0a104-739e-4bef-9304-4aa77e5e18ea.png} +0 -0
- /kotonebot/kaa/sprites/{3f5907a9-7fe4-4f46-8e46-a96ac7fa3923.png → 3ea8a020-5605-47ce-8d3a-d812d0583058.png} +0 -0
- /kotonebot/kaa/sprites/{15f8f31e-65ce-408d-8556-b799bcefc9d4.png → 404c6271-1af4-4f63-be02-e82b318eb072.png} +0 -0
- /kotonebot/kaa/sprites/{86b15801-c932-4034-bed8-fd76b0f65916.png → 43550662-cd46-4312-b18b-949cba98d173.png} +0 -0
- /kotonebot/kaa/sprites/{5d6c4462-3d7c-42eb-ab3e-195ebf845a09.png → 441c2df2-43ac-4ff3-814e-6230c510bce6.png} +0 -0
- /kotonebot/kaa/sprites/{08946997-4e9e-4242-95e1-e988fa96b919.png → 44430184-c35e-4bb8-8858-ed5cec580c36.png} +0 -0
- /kotonebot/kaa/sprites/{fe35655e-701b-4081-8df8-c17a7252acef.png → 4466c3fe-a5ad-4960-a137-0d735441b12e.png} +0 -0
- /kotonebot/kaa/sprites/{78b642d3-9a2c-4c17-8872-3cc78211f4a0.png → 46debd92-df4c-49d6-a3f6-c83a4c72be70.png} +0 -0
- /kotonebot/kaa/sprites/{d19c37ff-d5c1-4316-8424-e69ccb5c2523.png → 49e46cda-a6ac-44c8-8901-60956ca5151d.png} +0 -0
- /kotonebot/kaa/sprites/{06ea773b-e2b3-40d4-82f6-b119ce9ca00b.png → 4cca8c07-b33f-4f57-8c2b-3fff8cb4424a.png} +0 -0
- /kotonebot/kaa/sprites/{8669ce44-dec7-47c2-aafd-3f2fbfd1d083.png → 4fe4fbf2-4dbf-44d2-8dd6-a3f3c9f0d1b7.png} +0 -0
- /kotonebot/kaa/sprites/{61a09df6-7443-436c-9ef0-1d5a1cae1509.png → 501eaf11-021e-4764-93ed-0be6ea0ed5df.png} +0 -0
- /kotonebot/kaa/sprites/{ef2ad3df-3f89-4a48-8fc3-c70a8adc1044.png → 525b6f3a-acc8-4bd8-be4b-cc1f44fb377a.png} +0 -0
- /kotonebot/kaa/sprites/{e23e3f19-03f6-4507-9128-115191272b90.png → 540547f7-5633-440c-b7ad-b54529436479.png} +0 -0
- /kotonebot/kaa/sprites/{40c0f296-d29e-4e05-aaff-a212339b742e.png → 540a0d73-7158-4872-808f-abcb11ba1aef.png} +0 -0
- /kotonebot/kaa/sprites/{4a1902aa-01db-46bb-bea5-88ac62c82562.png → 559485ee-a27f-4824-ad7a-e57d0c613ed5.png} +0 -0
- /kotonebot/kaa/sprites/{c39f2006-442b-4ab7-99bb-3dfa0673f05d.png → 56a7aed8-6367-40dd-a6a1-fc8a840abd9b.png} +0 -0
- /kotonebot/kaa/sprites/{f1fac13a-84f3-42bd-9b52-e0ba90bc5255.png → 5d8bbe9f-4732-495a-8d27-80cfd2ea12f5.png} +0 -0
- /kotonebot/kaa/sprites/{5d5cb13b-c1fd-4808-b352-b21291a9ff0b.png → 612d508d-e77c-492e-854d-30141733bd27.png} +0 -0
- /kotonebot/kaa/sprites/{610348f2-6262-4cd1-8fc3-e7470f85580c.png → 62031705-40e0-4b74-b7b9-07f1fffd122f.png} +0 -0
- /kotonebot/kaa/sprites/{8431cc52-0041-4425-808c-dcd4d196506c.png → 62a4c9fd-35e6-4982-b9f4-e3a5685eac13.png} +0 -0
- /kotonebot/kaa/sprites/{f05e410d-15b8-4831-bcc1-4cd8af07c882.png → 685fb958-ec13-4826-8e78-3575ff42df27.png} +0 -0
- /kotonebot/kaa/sprites/{81399fd9-f254-4d0e-9775-ad451c237a4e.png → 689aa894-304a-48d2-8b6e-794dc967b1f6.png} +0 -0
- /kotonebot/kaa/sprites/{0f40352f-6443-406e-8e2c-c40d5cfc6c59.png → 69266fc9-c8fe-48ea-8d68-8ace8c606049.png} +0 -0
- /kotonebot/kaa/sprites/{5a393483-c631-47fd-805c-c460c23b8f9e.png → 699df701-37a2-4e17-afae-5b49ab826926.png} +0 -0
- /kotonebot/kaa/sprites/{5b75cae4-a853-402c-acec-edbfef94342a.png → 6a7eacf1-f14e-45cf-8ef7-7f933d4fa664.png} +0 -0
- /kotonebot/kaa/sprites/{4eb97d68-cd47-4100-9c3b-35b5c86b4bdf.png → 6af19ba1-ca74-473b-8788-61132e5fc084.png} +0 -0
- /kotonebot/kaa/sprites/{893b015d-6894-4e74-880e-d22859a25662.png → 6be05914-aa45-4e55-a0bb-7ec16e76d7b1.png} +0 -0
- /kotonebot/kaa/sprites/{bd7a6754-fffc-4315-987f-5ba32d95b697.png → 6f342de5-b179-4120-ab6d-404c3eee5caa.png} +0 -0
- /kotonebot/kaa/sprites/{c7e3736a-0e0f-474a-9386-f58292a45b92.png → 6fc5543e-9d09-4f06-8331-64ee62bd73c3.png} +0 -0
- /kotonebot/kaa/sprites/{5dc2dca3-48bd-4eee-af89-1a1d30593bd5.png → 7036c80b-28fd-4a54-a8f9-06a23d89e861.png} +0 -0
- /kotonebot/kaa/sprites/{9cbf7f6e-fe77-463b-9c60-495dc823510a.png → 71fe9437-3d7a-4321-9e5c-d6b81d954002.png} +0 -0
- /kotonebot/kaa/sprites/{d26bf52c-cb1b-4ebf-9c03-ff3f2d245959.png → 7344f9d8-fccb-44e3-ab43-a180cfce2217.png} +0 -0
- /kotonebot/kaa/sprites/{e2eb3bae-6451-40b9-bbff-90f11dca1904.png → 74e207b4-a13e-47cc-bf23-dbf77089ea3c.png} +0 -0
- /kotonebot/kaa/sprites/{242c088b-bc73-4d11-aa31-ee7c71477fb4.png → 76aca556-0042-4f84-a29a-30e6a631aa72.png} +0 -0
- /kotonebot/kaa/sprites/{76bde19a-4b1b-4e52-86d9-f56be7529c71.png → 7aa7c3dc-02e8-4d70-a026-d1afb34f37f9.png} +0 -0
- /kotonebot/kaa/sprites/{ebe4ce64-98a9-40f2-9fde-3d5cdae673c7.png → 7d4d40cf-a6db-41ef-90fd-2fb0a6f5087d.png} +0 -0
- /kotonebot/kaa/sprites/{54a15298-ecaf-4cc5-b8a2-5b0d8f8add41.png → 7d7ccd61-8d92-49b4-aa7e-b1e73906371e.png} +0 -0
- /kotonebot/kaa/sprites/{e5297036-9934-44a4-a761-a6a49ae06e3e.png → 807904aa-30fd-4a9b-8acb-ca4b235281bc.png} +0 -0
- /kotonebot/kaa/sprites/{4b7c4221-a679-47f6-929d-0ef514894b27.png → 81a6e258-670c-4646-90ef-a76846cf5d37.png} +0 -0
- /kotonebot/kaa/sprites/{f7c34ab6-c165-48b7-ad5a-0b60613ce1bc.png → 81bf65f2-9cc3-4613-9611-e7b5ec14c31c.png} +0 -0
- /kotonebot/kaa/sprites/{15191dec-7e33-4721-8068-15c11978e885.png → 84af97ac-7e73-4ae8-88a6-9b3a18c81fbe.png} +0 -0
- /kotonebot/kaa/sprites/{3031397e-3d12-4f23-8377-006eca5d2627.png → 85347bb8-c28d-4a40-bd55-386c530727c2.png} +0 -0
- /kotonebot/kaa/sprites/{d696062b-9b58-4af1-835e-2cf5a0a0fbeb.png → 884a25c2-7b98-4a33-a975-6f918a8301aa.png} +0 -0
- /kotonebot/kaa/sprites/{3851303a-e3a0-46eb-aa7e-b47fb41946f7.png → 88ed3d25-070a-411d-b4fb-8a9df068b091.png} +0 -0
- /kotonebot/kaa/sprites/{77d06f4d-8214-4306-9dc5-035c720f7256.png → 94b8429e-64d9-49da-945c-d2d3dcccb587.png} +0 -0
- /kotonebot/kaa/sprites/{fe853ac7-934e-4b4a-bcc7-b986e057dfcf.png → 95e591bb-f0e6-457e-83e3-0909cb5c8877.png} +0 -0
- /kotonebot/kaa/sprites/{51a3ed29-92b9-4429-9e50-783d1b8dc6a7.png → 982d2e5d-4493-44a5-b922-e71649fd6bc5.png} +0 -0
- /kotonebot/kaa/sprites/{6e5e9cf9-80b0-4241-a222-ff50dbd89a0c.png → 99ae067f-72f2-4d13-a2de-f78ce13ec5a3.png} +0 -0
- /kotonebot/kaa/sprites/{8c0fa5fa-cebb-4ae7-bd1c-b542c9cbf694.png → 9b425fee-9118-4015-9242-29bf1150e704.png} +0 -0
- /kotonebot/kaa/sprites/{52d3438b-afae-4c7a-abe5-7ed530c7558c.png → 9bf5d8a8-30c1-4ce7-9888-bcada63d48e6.png} +0 -0
- /kotonebot/kaa/sprites/{2f2a7951-a30a-4835-b9f6-3205cfdd2f05.png → 9fb0b19e-ae0c-4c9e-8ec8-b126113b6091.png} +0 -0
- /kotonebot/kaa/sprites/{49a43af3-17e3-4434-ba4d-519775ccaea9.png → a241cff0-d803-4c8f-bcd0-22bda2adc8a7.png} +0 -0
- /kotonebot/kaa/sprites/{bc7303f3-43e9-4ece-9206-5f9c779b813b.png → a26dc021-2a28-4f79-bd11-48c4a1261f0d.png} +0 -0
- /kotonebot/kaa/sprites/{d26b60f7-d15c-4563-bedc-dd6e7e4078b2.png → a2ab29ef-ddc7-4885-9f88-850858b0c995.png} +0 -0
- /kotonebot/kaa/sprites/{cc9483c3-c895-4dcc-b3f2-0934ba1ad42e.png → a388f87d-9a69-4189-b80a-e230d7d7b964.png} +0 -0
- /kotonebot/kaa/sprites/{dedea21b-f21d-4621-a213-70ad03faec58.png → a53820f6-1572-413a-b7b1-2bc08690884f.png} +0 -0
- /kotonebot/kaa/sprites/{5c9ae62c-488f-4109-a4d2-d2385c32043d.png → a5bd802e-d10c-4e95-9b62-1ffd92aca4ab.png} +0 -0
- /kotonebot/kaa/sprites/{e0246b0d-f0cf-49d4-8423-7da46e75a575.png → a6d63930-bb09-443c-95ae-47ad6a9f9cc4.png} +0 -0
- /kotonebot/kaa/sprites/{540ee3b5-ca8f-4091-80a6-ce774d95e5f7.png → ab4cd19c-ad2b-4ed7-baeb-eef6a12939b2.png} +0 -0
- /kotonebot/kaa/sprites/{6ef59649-bbb3-42b6-a6b0-eac4f35a3da4.png → abd7bfbf-5f08-452a-b216-22fb0af4e955.png} +0 -0
- /kotonebot/kaa/sprites/{913a1d17-54fe-4c8f-ac50-ef7f39600b86.png → ac4579ad-2000-4283-8e13-53fe525725bf.png} +0 -0
- /kotonebot/kaa/sprites/{cec49286-3d48-4fe0-8911-6a1b17d1ac20.png → ada79928-ea1a-4537-89e7-a02877dc6e7d.png} +0 -0
- /kotonebot/kaa/sprites/{e1b6b32b-c797-4f1d-aa2b-e7320083a9a6.png → af4b7a1d-4cb2-432c-8dbb-c333950c58c2.png} +0 -0
- /kotonebot/kaa/sprites/{5d94e628-82ff-4531-b70a-b13297491bea.png → b5d02984-ec1f-48f5-8593-0bc0e4babc1f.png} +0 -0
- /kotonebot/kaa/sprites/{3d1aa368-e198-478f-a47f-49818efbaec8.png → bba69e83-b9f4-4a24-a95b-190c985c5b22.png} +0 -0
- /kotonebot/kaa/sprites/{a2bf4e11-fbc3-4172-bc0b-b16f8f59e68c.png → bc10fc41-960e-4151-aad2-325367b20895.png} +0 -0
- /kotonebot/kaa/sprites/{4a96a728-6303-4ae3-8e0c-9f1e8e5f86a7.png → bc94b664-bbcf-4b59-8e4b-7dbf03997309.png} +0 -0
- /kotonebot/kaa/sprites/{03e34ef7-36b5-4ddc-9545-5b70a2eba72e.png → bf44c221-0af9-497e-a2e8-cdc497348257.png} +0 -0
- /kotonebot/kaa/sprites/{d5fd6c73-4ad8-47b5-89be-c7b137a9950f.png → bff85e9a-df48-429f-a82e-ceff41f8527b.png} +0 -0
- /kotonebot/kaa/sprites/{312dbd82-5457-474a-91ce-511f0e4e9c80.png → c4985caa-1e42-4980-9a76-a660a7b12c67.png} +0 -0
- /kotonebot/kaa/sprites/{3536f829-70d3-48f9-8fd4-b65eab7502f3.png → c5447438-3b41-465e-b438-157f5e61c764.png} +0 -0
- /kotonebot/kaa/sprites/{d06fd859-4678-4593-b096-c86b38810cb7.png → c696843a-1e17-4c0d-a92c-eb54f9356daf.png} +0 -0
- /kotonebot/kaa/sprites/{31851ad1-df39-4a4f-9ae7-19c1d1c6b51a.png → cc959ce4-8619-4bd7-8a85-02f97cf6cc51.png} +0 -0
- /kotonebot/kaa/sprites/{497e7930-f423-457a-8168-b1a1532bb1e9.png → ce0df3fa-5d88-4b20-9cf1-6b4abac4c110.png} +0 -0
- /kotonebot/kaa/sprites/{860c3d98-e263-482f-95fb-4fc9c472e8b8.png → d2a8f04f-38c1-4a67-8c57-43e0334887ef.png} +0 -0
- /kotonebot/kaa/sprites/{0769f8f4-1c47-4bad-a783-bba5e20250bf.png → db375f07-c682-4aae-880a-a2cf13d0dac0.png} +0 -0
- /kotonebot/kaa/sprites/{964c6b90-f526-4199-9523-d8124373a56b.png → dd4c523c-1286-4f68-89f5-371464aa138c.png} +0 -0
- /kotonebot/kaa/sprites/{0d60ce10-20ce-4980-8172-b6bac08d6258.png → e2d3a8c0-3998-4643-b084-c21b2304843c.png} +0 -0
- /kotonebot/kaa/sprites/{fff33200-c947-49f2-ab86-3ac98937fa36.png → e3c1f79a-0077-43db-bd00-ba04d7ca8d3b.png} +0 -0
- /kotonebot/kaa/sprites/{e7da5988-0e83-44ad-888b-246365473f9e.png → e47acec2-3466-419a-acad-30618239aab9.png} +0 -0
- /kotonebot/kaa/sprites/{5cdd71be-c8cd-4310-b6f4-5e97ddbeb46e.png → e671d7bd-cf40-425f-b941-3e1adf4624e8.png} +0 -0
- /kotonebot/kaa/sprites/{14d09c44-3897-4c81-b615-19c35d0f3793.png → e703f139-9612-4e4a-be30-db32423d57d9.png} +0 -0
- /kotonebot/kaa/sprites/{5824ef5f-6776-402c-b78c-ae79cc4cc878.png → e89906b2-7354-4724-80ef-7c7fe5cd3ef5.png} +0 -0
- /kotonebot/kaa/sprites/{85a49ff3-6075-4797-8b7f-35851a843698.png → ea0440b1-a7a5-4db0-828a-f907b0531cd5.png} +0 -0
- /kotonebot/kaa/sprites/{cef78712-d9ae-4d6e-8d7d-d047d48fbb98.png → ecdf7c70-d50e-41f4-a2ee-c4f6dd5a2617.png} +0 -0
- /kotonebot/kaa/sprites/{43e72796-a644-4d9b-a817-8add011d9a75.png → ed331876-f724-4a9f-a494-7823be883a76.png} +0 -0
- /kotonebot/kaa/sprites/{c774098e-d782-455c-80a9-5bad3713129d.png → ee7f4e24-6cbc-41ed-9327-d6843ac6a820.png} +0 -0
- /kotonebot/kaa/sprites/{7ddda828-c8b0-4331-864f-99b85b7c5557.png → f1758956-6b88-49f7-9ecf-44db49d1e6fe.png} +0 -0
- /kotonebot/kaa/sprites/{c70f4634-6821-4480-a615-b5f9cdc578c1.png → f6063ed7-f59e-4c37-93e2-026c805826ea.png} +0 -0
- /kotonebot/kaa/sprites/{97c281a9-ebb0-4f54-b644-b7ed7dd65f81.png → f699ed29-e7aa-4c53-8320-3df785078ec3.png} +0 -0
- /kotonebot/kaa/sprites/{515a2ff0-36b8-4f2f-9902-e6c1b9796586.png → f897b52f-b9d8-4d94-9d98-1ed6bf7b6c76.png} +0 -0
- /kotonebot/kaa/sprites/{86062e91-d6c1-44cf-9f8c-26a8b9dd8686.png → f92f9af7-77ef-4814-a64b-ce8f340a9cf9.png} +0 -0
- /kotonebot/kaa/sprites/{338b699a-d556-4b80-a577-123442c3db45.png → fccea764-f5db-45c6-ace1-140844e0d0f0.png} +0 -0
- /kotonebot/kaa/sprites/{35516b69-a4f4-4ad4-8af4-35043475ee90.png → feb8f473-8a2e-40a5-b6e0-dffafd35edc1.png} +0 -0
- {ksaa-2025.6.28.0.dist-info → ksaa-2025.7.3.0.dist-info}/WHEEL +0 -0
- {ksaa-2025.6.28.0.dist-info → ksaa-2025.7.3.0.dist-info}/entry_points.txt +0 -0
- {ksaa-2025.6.28.0.dist-info → ksaa-2025.7.3.0.dist-info}/licenses/LICENSE +0 -0
- {ksaa-2025.6.28.0.dist-info → ksaa-2025.7.3.0.dist-info}/top_level.txt +0 -0
kotonebot/kaa/common.py
CHANGED
|
@@ -461,6 +461,21 @@ class EndGameConfig(ConfigBaseModel):
|
|
|
461
461
|
(目前仅对 DMM 版有效。)
|
|
462
462
|
"""
|
|
463
463
|
|
|
464
|
+
class MiscConfig(ConfigBaseModel):
|
|
465
|
+
check_update: Literal['never', 'startup'] = 'startup'
|
|
466
|
+
"""
|
|
467
|
+
检查更新时机。
|
|
468
|
+
|
|
469
|
+
* never: 从不检查更新。
|
|
470
|
+
* startup: 启动时检查更新。
|
|
471
|
+
"""
|
|
472
|
+
auto_install_update: bool = True
|
|
473
|
+
"""
|
|
474
|
+
是否自动安装更新。
|
|
475
|
+
|
|
476
|
+
若启用,则每次自动检查更新时若有新版本会自动安装,否则只是会提示。
|
|
477
|
+
"""
|
|
478
|
+
|
|
464
479
|
class BaseConfig(ConfigBaseModel):
|
|
465
480
|
purchase: PurchaseConfig = PurchaseConfig()
|
|
466
481
|
"""商店购买配置"""
|
|
@@ -501,6 +516,9 @@ class BaseConfig(ConfigBaseModel):
|
|
|
501
516
|
end_game: EndGameConfig = EndGameConfig()
|
|
502
517
|
"""关闭游戏配置"""
|
|
503
518
|
|
|
519
|
+
misc: MiscConfig = MiscConfig()
|
|
520
|
+
"""杂项配置"""
|
|
521
|
+
|
|
504
522
|
|
|
505
523
|
def conf() -> BaseConfig:
|
|
506
524
|
"""获取当前配置数据"""
|
kotonebot/kaa/main/gr.py
CHANGED
|
@@ -3,6 +3,9 @@ import traceback
|
|
|
3
3
|
import zipfile
|
|
4
4
|
import logging
|
|
5
5
|
import copy
|
|
6
|
+
import sys
|
|
7
|
+
import subprocess
|
|
8
|
+
import json
|
|
6
9
|
from functools import partial
|
|
7
10
|
from itertools import chain
|
|
8
11
|
from datetime import datetime, timedelta
|
|
@@ -22,7 +25,7 @@ from kotonebot.kaa.common import (
|
|
|
22
25
|
BaseConfig, APShopItems, CapsuleToysConfig, ClubRewardConfig, PurchaseConfig, ActivityFundsConfig,
|
|
23
26
|
PresentsConfig, AssignmentConfig, ContestConfig, ProduceConfig,
|
|
24
27
|
MissionRewardConfig, DailyMoneyShopItems, ProduceAction,
|
|
25
|
-
RecommendCardDetectionMode, TraceConfig, StartGameConfig, EndGameConfig, UpgradeSupportCardConfig,
|
|
28
|
+
RecommendCardDetectionMode, TraceConfig, StartGameConfig, EndGameConfig, UpgradeSupportCardConfig, MiscConfig,
|
|
26
29
|
)
|
|
27
30
|
|
|
28
31
|
logger = logging.getLogger(__name__)
|
|
@@ -88,6 +91,9 @@ ConfigKey = Literal[
|
|
|
88
91
|
'presents_enabled',
|
|
89
92
|
'trace_recommend_card_detection',
|
|
90
93
|
|
|
94
|
+
# misc
|
|
95
|
+
'check_update', 'auto_install_update',
|
|
96
|
+
|
|
91
97
|
'_selected_backend_index'
|
|
92
98
|
|
|
93
99
|
]
|
|
@@ -1469,6 +1475,35 @@ class KotoneBotUI:
|
|
|
1469
1475
|
'trace_recommend_card_detection': trace_recommend_card_detection
|
|
1470
1476
|
}
|
|
1471
1477
|
|
|
1478
|
+
def _create_misc_settings(self) -> ConfigBuilderReturnValue:
|
|
1479
|
+
with gr.Column():
|
|
1480
|
+
gr.Markdown("### 杂项设置")
|
|
1481
|
+
check_update = gr.Dropdown(
|
|
1482
|
+
choices=[
|
|
1483
|
+
("启动时检查更新", "startup"),
|
|
1484
|
+
("从不检查更新", "never")
|
|
1485
|
+
],
|
|
1486
|
+
value=self.current_config.options.misc.check_update,
|
|
1487
|
+
label="检查更新时机",
|
|
1488
|
+
info=MiscConfig.model_fields['check_update'].description,
|
|
1489
|
+
interactive=True
|
|
1490
|
+
)
|
|
1491
|
+
auto_install_update = gr.Checkbox(
|
|
1492
|
+
label="自动安装更新",
|
|
1493
|
+
value=self.current_config.options.misc.auto_install_update,
|
|
1494
|
+
info=MiscConfig.model_fields['auto_install_update'].description,
|
|
1495
|
+
interactive=True
|
|
1496
|
+
)
|
|
1497
|
+
|
|
1498
|
+
def set_config(config: BaseConfig, data: dict[ConfigKey, Any]) -> None:
|
|
1499
|
+
config.misc.check_update = data['check_update']
|
|
1500
|
+
config.misc.auto_install_update = data['auto_install_update']
|
|
1501
|
+
|
|
1502
|
+
return set_config, {
|
|
1503
|
+
'check_update': check_update,
|
|
1504
|
+
'auto_install_update': auto_install_update
|
|
1505
|
+
}
|
|
1506
|
+
|
|
1472
1507
|
def _create_settings_tab(self) -> None:
|
|
1473
1508
|
with gr.Tab("设置"):
|
|
1474
1509
|
gr.Markdown("## 设置")
|
|
@@ -1506,6 +1541,9 @@ class KotoneBotUI:
|
|
|
1506
1541
|
# 跟踪设置
|
|
1507
1542
|
trace_settings = self._create_trace_settings()
|
|
1508
1543
|
|
|
1544
|
+
# 杂项设置
|
|
1545
|
+
misc_settings = self._create_misc_settings()
|
|
1546
|
+
|
|
1509
1547
|
# 启动游戏设置
|
|
1510
1548
|
start_game_settings = self._create_start_game_settings()
|
|
1511
1549
|
|
|
@@ -1529,7 +1567,8 @@ class KotoneBotUI:
|
|
|
1529
1567
|
capsule_toys_settings,
|
|
1530
1568
|
start_game_settings,
|
|
1531
1569
|
end_game_settings,
|
|
1532
|
-
trace_settings
|
|
1570
|
+
trace_settings,
|
|
1571
|
+
misc_settings
|
|
1533
1572
|
] # list of (set_func, { 'key': component, ... })
|
|
1534
1573
|
all_components = [list(ret[1].values()) for ret in all_return_values] # [[c1, c2], [c3], ...]
|
|
1535
1574
|
all_components = list(chain(*all_components)) # [c1, c2, c3, ...]
|
|
@@ -1571,10 +1610,224 @@ class KotoneBotUI:
|
|
|
1571
1610
|
)
|
|
1572
1611
|
|
|
1573
1612
|
def _create_whats_new_tab(self) -> None:
|
|
1574
|
-
"""
|
|
1575
|
-
with gr.Tab("
|
|
1576
|
-
|
|
1577
|
-
|
|
1613
|
+
"""创建更新标签页"""
|
|
1614
|
+
with gr.Tab("更新"):
|
|
1615
|
+
gr.Markdown("## 版本管理")
|
|
1616
|
+
|
|
1617
|
+
# 更新日志
|
|
1618
|
+
with gr.Accordion("更新日志", open=False):
|
|
1619
|
+
from kotonebot.kaa.metadata import WHATS_NEW
|
|
1620
|
+
gr.Markdown(WHATS_NEW)
|
|
1621
|
+
|
|
1622
|
+
# 载入信息按钮
|
|
1623
|
+
load_info_btn = gr.Button("载入信息", variant="primary")
|
|
1624
|
+
|
|
1625
|
+
# 状态信息
|
|
1626
|
+
status_text = gr.Markdown("")
|
|
1627
|
+
|
|
1628
|
+
# 版本选择下拉框(用于安装)
|
|
1629
|
+
version_dropdown = gr.Dropdown(
|
|
1630
|
+
label="选择要安装的版本",
|
|
1631
|
+
choices=[],
|
|
1632
|
+
value=None,
|
|
1633
|
+
visible=False,
|
|
1634
|
+
interactive=True
|
|
1635
|
+
)
|
|
1636
|
+
|
|
1637
|
+
# 安装选定版本按钮
|
|
1638
|
+
install_selected_btn = gr.Button("安装选定版本", visible=False)
|
|
1639
|
+
|
|
1640
|
+
def list_all_versions():
|
|
1641
|
+
"""列出所有可用版本"""
|
|
1642
|
+
import logging
|
|
1643
|
+
logger = logging.getLogger(__name__)
|
|
1644
|
+
|
|
1645
|
+
try:
|
|
1646
|
+
# 构建命令,使用清华镜像源
|
|
1647
|
+
cmd = [
|
|
1648
|
+
sys.executable, "-m", "pip", "index", "versions", "ksaa", "--json",
|
|
1649
|
+
"--index-url", "https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple",
|
|
1650
|
+
"--trusted-host", "mirrors.tuna.tsinghua.edu.cn"
|
|
1651
|
+
]
|
|
1652
|
+
logger.info(f"执行命令: {' '.join(cmd)}")
|
|
1653
|
+
|
|
1654
|
+
# 使用 pip index versions --json 来获取版本信息
|
|
1655
|
+
result = subprocess.run(
|
|
1656
|
+
cmd,
|
|
1657
|
+
capture_output=True,
|
|
1658
|
+
text=True,
|
|
1659
|
+
timeout=30
|
|
1660
|
+
)
|
|
1661
|
+
|
|
1662
|
+
logger.info(f"命令返回码: {result.returncode}")
|
|
1663
|
+
if result.stdout:
|
|
1664
|
+
logger.info(f"命令输出: {result.stdout[:500]}...") # 只记录前500字符
|
|
1665
|
+
if result.stderr:
|
|
1666
|
+
logger.warning(f"命令错误输出: {result.stderr}")
|
|
1667
|
+
|
|
1668
|
+
if result.returncode != 0:
|
|
1669
|
+
error_msg = f"获取版本列表失败: {result.stderr}"
|
|
1670
|
+
logger.error(error_msg)
|
|
1671
|
+
return (
|
|
1672
|
+
error_msg,
|
|
1673
|
+
gr.Button(value="载入信息", interactive=True),
|
|
1674
|
+
gr.Dropdown(visible=False),
|
|
1675
|
+
gr.Button(visible=False)
|
|
1676
|
+
)
|
|
1677
|
+
|
|
1678
|
+
# 解析 JSON 输出
|
|
1679
|
+
try:
|
|
1680
|
+
data = json.loads(result.stdout)
|
|
1681
|
+
versions = data.get("versions", [])
|
|
1682
|
+
latest_version = data.get("latest", "")
|
|
1683
|
+
installed_version = data.get("installed_version", "")
|
|
1684
|
+
|
|
1685
|
+
logger.info(f"解析到 {len(versions)} 个版本")
|
|
1686
|
+
logger.info(f"最新版本: {latest_version}")
|
|
1687
|
+
logger.info(f"已安装版本: {installed_version}")
|
|
1688
|
+
|
|
1689
|
+
except json.JSONDecodeError as e:
|
|
1690
|
+
error_msg = f"解析版本信息失败: {str(e)}"
|
|
1691
|
+
logger.error(error_msg)
|
|
1692
|
+
return (
|
|
1693
|
+
error_msg,
|
|
1694
|
+
gr.Button(value="载入信息", interactive=True),
|
|
1695
|
+
gr.Dropdown(visible=False),
|
|
1696
|
+
gr.Button(visible=False)
|
|
1697
|
+
)
|
|
1698
|
+
|
|
1699
|
+
if not versions:
|
|
1700
|
+
error_msg = "未找到可用版本"
|
|
1701
|
+
logger.warning(error_msg)
|
|
1702
|
+
return (
|
|
1703
|
+
error_msg,
|
|
1704
|
+
gr.Button(value="载入信息", interactive=True),
|
|
1705
|
+
gr.Dropdown(visible=False),
|
|
1706
|
+
gr.Button(visible=False)
|
|
1707
|
+
)
|
|
1708
|
+
|
|
1709
|
+
# 构建状态信息
|
|
1710
|
+
status_info = []
|
|
1711
|
+
if installed_version:
|
|
1712
|
+
status_info.append(f"**当前安装版本:** {installed_version}")
|
|
1713
|
+
if latest_version:
|
|
1714
|
+
status_info.append(f"**最新版本:** {latest_version}")
|
|
1715
|
+
status_info.append(f"**找到 {len(versions)} 个可用版本**")
|
|
1716
|
+
|
|
1717
|
+
status_message = "\n\n".join(status_info)
|
|
1718
|
+
logger.info(f"版本信息载入完成: {status_message}")
|
|
1719
|
+
|
|
1720
|
+
# 返回更新后的组件
|
|
1721
|
+
return (
|
|
1722
|
+
status_message,
|
|
1723
|
+
gr.Button(value="载入信息", interactive=True),
|
|
1724
|
+
gr.Dropdown(choices=versions, value=versions[0] if versions else None, visible=True, label="选择要安装的版本"),
|
|
1725
|
+
gr.Button(visible=True, value="安装选定版本")
|
|
1726
|
+
)
|
|
1727
|
+
|
|
1728
|
+
except subprocess.TimeoutExpired:
|
|
1729
|
+
error_msg = "获取版本列表超时"
|
|
1730
|
+
logger.error(error_msg)
|
|
1731
|
+
return (
|
|
1732
|
+
error_msg,
|
|
1733
|
+
gr.Button(value="载入信息", interactive=True),
|
|
1734
|
+
gr.Dropdown(visible=False),
|
|
1735
|
+
gr.Button(visible=False)
|
|
1736
|
+
)
|
|
1737
|
+
except Exception as e:
|
|
1738
|
+
error_msg = f"获取版本列表失败: {str(e)}"
|
|
1739
|
+
logger.error(error_msg)
|
|
1740
|
+
return (
|
|
1741
|
+
error_msg,
|
|
1742
|
+
gr.Button(value="载入信息", interactive=True),
|
|
1743
|
+
gr.Dropdown(visible=False),
|
|
1744
|
+
gr.Button(visible=False)
|
|
1745
|
+
)
|
|
1746
|
+
|
|
1747
|
+
def install_selected_version(selected_version: str):
|
|
1748
|
+
"""安装选定的版本"""
|
|
1749
|
+
import logging
|
|
1750
|
+
import threading
|
|
1751
|
+
import time
|
|
1752
|
+
logger = logging.getLogger(__name__)
|
|
1753
|
+
|
|
1754
|
+
if not selected_version:
|
|
1755
|
+
error_msg = "请先选择一个版本"
|
|
1756
|
+
logger.warning(error_msg)
|
|
1757
|
+
return error_msg
|
|
1758
|
+
|
|
1759
|
+
def install_and_exit():
|
|
1760
|
+
"""在后台线程中执行安装并退出程序"""
|
|
1761
|
+
try:
|
|
1762
|
+
# 等待一小段时间确保UI响应已返回
|
|
1763
|
+
time.sleep(1)
|
|
1764
|
+
|
|
1765
|
+
# 构建启动器命令
|
|
1766
|
+
bootstrap_path = os.path.join(os.getcwd(), "bootstrap.pyz")
|
|
1767
|
+
cmd = [sys.executable, bootstrap_path, f"--install-version={selected_version}"]
|
|
1768
|
+
logger.info(f"开始通过启动器安装版本 {selected_version}")
|
|
1769
|
+
logger.info(f"执行命令: {' '.join(cmd)}")
|
|
1770
|
+
|
|
1771
|
+
# 启动启动器进程(不等待完成)
|
|
1772
|
+
subprocess.Popen(
|
|
1773
|
+
cmd,
|
|
1774
|
+
cwd=os.getcwd(),
|
|
1775
|
+
creationflags=subprocess.CREATE_NEW_CONSOLE if os.name == 'nt' else 0
|
|
1776
|
+
)
|
|
1777
|
+
|
|
1778
|
+
# 等待一小段时间确保启动器启动
|
|
1779
|
+
time.sleep(2)
|
|
1780
|
+
|
|
1781
|
+
# 退出当前程序
|
|
1782
|
+
logger.info("安装即将开始,正在退出当前程序...")
|
|
1783
|
+
os._exit(0)
|
|
1784
|
+
|
|
1785
|
+
except Exception as e:
|
|
1786
|
+
raise
|
|
1787
|
+
|
|
1788
|
+
try:
|
|
1789
|
+
# 在后台线程中执行安装和退出
|
|
1790
|
+
install_thread = threading.Thread(target=install_and_exit, daemon=True)
|
|
1791
|
+
install_thread.start()
|
|
1792
|
+
|
|
1793
|
+
return f"正在启动器中安装版本 {selected_version},程序将自动重启..."
|
|
1794
|
+
|
|
1795
|
+
except Exception as e:
|
|
1796
|
+
error_msg = f"启动安装进程失败: {str(e)}"
|
|
1797
|
+
logger.error(error_msg)
|
|
1798
|
+
return error_msg
|
|
1799
|
+
|
|
1800
|
+
def load_info_with_button_state():
|
|
1801
|
+
"""载入信息并管理按钮状态"""
|
|
1802
|
+
import logging
|
|
1803
|
+
logger = logging.getLogger(__name__)
|
|
1804
|
+
|
|
1805
|
+
logger.info("开始载入版本信息")
|
|
1806
|
+
|
|
1807
|
+
# 先禁用按钮
|
|
1808
|
+
yield (
|
|
1809
|
+
"正在载入版本信息...",
|
|
1810
|
+
gr.Button(value="载入中...", interactive=False),
|
|
1811
|
+
gr.Dropdown(visible=False),
|
|
1812
|
+
gr.Button(visible=False)
|
|
1813
|
+
)
|
|
1814
|
+
|
|
1815
|
+
# 执行载入操作
|
|
1816
|
+
result = list_all_versions()
|
|
1817
|
+
logger.info("版本信息载入操作完成")
|
|
1818
|
+
yield result
|
|
1819
|
+
|
|
1820
|
+
# 绑定事件
|
|
1821
|
+
load_info_btn.click(
|
|
1822
|
+
fn=load_info_with_button_state,
|
|
1823
|
+
outputs=[status_text, load_info_btn, version_dropdown, install_selected_btn]
|
|
1824
|
+
)
|
|
1825
|
+
|
|
1826
|
+
install_selected_btn.click(
|
|
1827
|
+
fn=install_selected_version,
|
|
1828
|
+
inputs=[version_dropdown],
|
|
1829
|
+
outputs=[status_text]
|
|
1830
|
+
)
|
|
1578
1831
|
|
|
1579
1832
|
def _create_screen_tab(self) -> None:
|
|
1580
1833
|
with gr.Tab("画面"):
|
kotonebot/kaa/metadata.py
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
WHATS_NEW = """
|
|
2
2
|
# 更新日志
|
|
3
3
|
## kaa
|
|
4
|
+
### v2025.7.3.0
|
|
5
|
+
启动器:
|
|
6
|
+
* [新增] 新启动器现在支持安装指定版本与指定补丁(#456019b)
|
|
7
|
+
* [新增] 自动更新可禁用(#3f88c3a)
|
|
8
|
+
* [新增] 启动器 C++ EXE 跳板程序(#b377b84)
|
|
9
|
+
* [新增] 新启动器(#c4b93f4)
|
|
10
|
+
|
|
11
|
+
其他:
|
|
12
|
+
* [其他] Git 记录提取工具支持 bootstrap scope(#66ea531)
|
|
13
|
+
|
|
4
14
|
### v2025.6.28.0
|
|
5
15
|
脚本:
|
|
6
16
|
* [修复] 修正 debug_entry 脚本路径处理逻辑(#b53a055)
|
|
Binary file
|
kotonebot/kaa/resources/game.db
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|