ksaa 2025.6.28.0__py3-none-any.whl → 2025.7.5.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/client/device.py +0 -35
- kotonebot/kaa/common.py +18 -0
- kotonebot/kaa/game_ui/toolbar.py +3 -2
- kotonebot/kaa/main/gr.py +259 -6
- kotonebot/kaa/metadata.py +19 -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-1-001_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-hmsz-1-001_1.png +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/resources/idol_cards/i_card-skin-hume-1-001_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-hume-1-001_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-1-001_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-1-001_1.png +0 -0
- kotonebot/kaa/sprites/0bf5e34e-afc6-4447-bbac-67026ce2ad26.png +0 -0
- kotonebot/kaa/tasks/R.py +136 -134
- kotonebot/kaa/tasks/daily/assignment.py +9 -11
- kotonebot/kaa/tasks/produce/produce.py +12 -5
- {ksaa-2025.6.28.0.dist-info → ksaa-2025.7.5.0.dist-info}/METADATA +1 -1
- {ksaa-2025.6.28.0.dist-info → ksaa-2025.7.5.0.dist-info}/RECORD +158 -149
- /kotonebot/kaa/sprites/{f1fac13a-84f3-42bd-9b52-e0ba90bc5255.png → 063825e2-f4c7-4047-8958-7cc0a8cf32fb.png} +0 -0
- /kotonebot/kaa/sprites/{5d6c4462-3d7c-42eb-ab3e-195ebf845a09.png → 068d9a7a-2920-44ab-8fe4-b48bec98b837.png} +0 -0
- /kotonebot/kaa/sprites/{78b642d3-9a2c-4c17-8872-3cc78211f4a0.png → 07ffe5a8-f817-4087-a7ce-da19516b9f55.png} +0 -0
- /kotonebot/kaa/sprites/{3d1aa368-e198-478f-a47f-49818efbaec8.png → 09934d4f-a1a1-47c6-8127-32247b3144a6.png} +0 -0
- /kotonebot/kaa/sprites/{8431cc52-0041-4425-808c-dcd4d196506c.png → 09ea0d24-9412-4f0e-bbe8-9227687b9cb5.png} +0 -0
- /kotonebot/kaa/sprites/{15191dec-7e33-4721-8068-15c11978e885.png → 0ab2fef6-759e-41a7-a078-c71a09acc829.png} +0 -0
- /kotonebot/kaa/sprites/{540ee3b5-ca8f-4091-80a6-ce774d95e5f7.png → 0ae22f69-b9e4-43c5-8c95-53360c0d4b35.png} +0 -0
- /kotonebot/kaa/sprites/{9dcca89b-c92b-4708-8f19-facd40d09a65.png → 1062488e-eb7c-42e0-bb3d-675d88992dc5.png} +0 -0
- /kotonebot/kaa/sprites/{ebe4ce64-98a9-40f2-9fde-3d5cdae673c7.png → 10e06d0b-9cef-489c-8468-adad39067d8a.png} +0 -0
- /kotonebot/kaa/sprites/{bd7a6754-fffc-4315-987f-5ba32d95b697.png → 112c76ba-0409-4ba9-b485-19500003a60b.png} +0 -0
- /kotonebot/kaa/sprites/{913a1d17-54fe-4c8f-ac50-ef7f39600b86.png → 13f72533-c91e-412d-8b43-208e2128cd16.png} +0 -0
- /kotonebot/kaa/sprites/{aacd229c-d307-4a20-a388-84d8f4afb4a5.png → 18a02cbe-5d07-487c-866b-62b9609ee02f.png} +0 -0
- /kotonebot/kaa/sprites/{893b015d-6894-4e74-880e-d22859a25662.png → 1bc32bd5-c429-490f-8a52-fd52d4e27ff8.png} +0 -0
- /kotonebot/kaa/sprites/{85a49ff3-6075-4797-8b7f-35851a843698.png → 1c53ee9f-9dda-43bb-b788-de675c7ebfbe.png} +0 -0
- /kotonebot/kaa/sprites/{31851ad1-df39-4a4f-9ae7-19c1d1c6b51a.png → 22672fe7-40d8-425f-a465-b19af092cb2f.png} +0 -0
- /kotonebot/kaa/sprites/{6ef59649-bbb3-42b6-a6b0-eac4f35a3da4.png → 23d99912-0b9f-434c-bd90-9ab71e70e6f4.png} +0 -0
- /kotonebot/kaa/sprites/{03e34ef7-36b5-4ddc-9545-5b70a2eba72e.png → 24a955bb-feff-4ace-a38c-8a6c3e6d4e95.png} +0 -0
- /kotonebot/kaa/sprites/{5cdd71be-c8cd-4310-b6f4-5e97ddbeb46e.png → 25bf9c17-099b-437e-ae0f-8226c7c0faa9.png} +0 -0
- /kotonebot/kaa/sprites/{0769f8f4-1c47-4bad-a783-bba5e20250bf.png → 2919b90c-64b6-4961-b2a9-edea29cda27b.png} +0 -0
- /kotonebot/kaa/sprites/{fff33200-c947-49f2-ab86-3ac98937fa36.png → 2a07a1e9-8033-492a-80de-8269a94abc85.png} +0 -0
- /kotonebot/kaa/sprites/{818e2370-8fb9-4e6c-ab78-58e86d6525b5.png → 2a08cc2b-5cba-4771-a351-94121c52308c.png} +0 -0
- /kotonebot/kaa/sprites/{bc7303f3-43e9-4ece-9206-5f9c779b813b.png → 2ad5f996-e825-4c91-bf84-b3a139d7f1e9.png} +0 -0
- /kotonebot/kaa/sprites/{4a1902aa-01db-46bb-bea5-88ac62c82562.png → 2cf84d6e-5212-4da5-8a01-cfdab00a8d1b.png} +0 -0
- /kotonebot/kaa/sprites/{75a2093d-8743-427e-8d24-ae9a69fa14c1.png → 304df45b-b744-427e-ba79-9f57a2313776.png} +0 -0
- /kotonebot/kaa/sprites/{469c2b41-4171-4902-acc5-da0c807886ab.png → 31fedc14-7e32-4547-a97d-4b76aa8e9ca5.png} +0 -0
- /kotonebot/kaa/sprites/{06ea773b-e2b3-40d4-82f6-b119ce9ca00b.png → 3305dc0c-d721-4e82-a5f8-4b8d96eea228.png} +0 -0
- /kotonebot/kaa/sprites/{35516b69-a4f4-4ad4-8af4-35043475ee90.png → 34dc26b6-237e-4932-a009-8c03f4a4841f.png} +0 -0
- /kotonebot/kaa/sprites/{0f6d7f89-bdb2-4235-9b6b-e65cb73a4167.png → 38018b98-4f03-43f5-8fa2-ba739a1edd7e.png} +0 -0
- /kotonebot/kaa/sprites/{f05e410d-15b8-4831-bcc1-4cd8af07c882.png → 3a234f56-2287-4ced-8093-253ece372af2.png} +0 -0
- /kotonebot/kaa/sprites/{55e4ef75-ba8e-4230-819c-450cf14b08cd.png → 3a5b5966-b641-42b1-816e-aa0ae465ad66.png} +0 -0
- /kotonebot/kaa/sprites/{36d71d33-09c9-4be8-b184-ccf40f700333.png → 3d2ce9cb-39a0-4b2f-ab96-39ded89a67c3.png} +0 -0
- /kotonebot/kaa/sprites/{dedb8499-5881-4add-914f-ff0049285dae.png → 3ed00c80-7b46-4eba-9df7-89de8161150f.png} +0 -0
- /kotonebot/kaa/sprites/{54a15298-ecaf-4cc5-b8a2-5b0d8f8add41.png → 45353fcd-59ea-4b15-93f7-8591adfa7af8.png} +0 -0
- /kotonebot/kaa/sprites/{0f40352f-6443-406e-8e2c-c40d5cfc6c59.png → 46800ab2-388f-4945-941a-3e18607c9676.png} +0 -0
- /kotonebot/kaa/sprites/{d06fd859-4678-4593-b096-c86b38810cb7.png → 482b5f67-1680-4a93-8bb2-2a357dfd8d8d.png} +0 -0
- /kotonebot/kaa/sprites/{fa80b14e-953f-44bd-a4ad-99aefd276fd7.png → 511408bd-a212-4261-b4f1-b6c592e44c52.png} +0 -0
- /kotonebot/kaa/sprites/{d696062b-9b58-4af1-835e-2cf5a0a0fbeb.png → 5365f6d2-17e2-4d51-a2c0-535007949cb3.png} +0 -0
- /kotonebot/kaa/sprites/{515a2ff0-36b8-4f2f-9902-e6c1b9796586.png → 5568e31d-9d55-4435-8cef-ef8b6fc8d2d8.png} +0 -0
- /kotonebot/kaa/sprites/{86b15801-c932-4034-bed8-fd76b0f65916.png → 561b20a8-1faa-4be9-8861-7132ce1836ed.png} +0 -0
- /kotonebot/kaa/sprites/{4a96a728-6303-4ae3-8e0c-9f1e8e5f86a7.png → 57f56121-cdc4-4c29-8fcd-9d4f872c98e7.png} +0 -0
- /kotonebot/kaa/sprites/{a546e254-0490-43df-a291-a9a5c2b4c34a.png → 59067ba8-2bfe-4bc8-b028-90ccb1acf5f6.png} +0 -0
- /kotonebot/kaa/sprites/{4eb97d68-cd47-4100-9c3b-35b5c86b4bdf.png → 593442ad-94f8-4d68-b986-8cf92e74e76d.png} +0 -0
- /kotonebot/kaa/sprites/{5c9ae62c-488f-4109-a4d2-d2385c32043d.png → 60a3bc3c-099b-4090-9f6f-253c963e9fa4.png} +0 -0
- /kotonebot/kaa/sprites/{3536f829-70d3-48f9-8fd4-b65eab7502f3.png → 60b5e390-c956-4e7b-9a3c-3db0c2481d5b.png} +0 -0
- /kotonebot/kaa/sprites/{7ddda828-c8b0-4331-864f-99b85b7c5557.png → 61feefa4-f5ec-4a99-b8fc-19deefa8d1cd.png} +0 -0
- /kotonebot/kaa/sprites/{c9d3699b-c8b1-4294-9b48-103df4ab6c65.png → 6514f807-0a12-4338-a3be-9f0a2bc22e7e.png} +0 -0
- /kotonebot/kaa/sprites/{61a09df6-7443-436c-9ef0-1d5a1cae1509.png → 67cce3d0-3c80-44a0-9193-18d00f9712af.png} +0 -0
- /kotonebot/kaa/sprites/{5a393483-c631-47fd-805c-c460c23b8f9e.png → 68f109c1-297e-4aa8-b472-372f1d689b33.png} +0 -0
- /kotonebot/kaa/sprites/{a2bf4e11-fbc3-4172-bc0b-b16f8f59e68c.png → 6be7624f-c0ac-4605-b8ba-56f8b07d7de0.png} +0 -0
- /kotonebot/kaa/sprites/{3031397e-3d12-4f23-8377-006eca5d2627.png → 6f3a4ad7-0949-4a1d-a0ea-1daa4148b9c9.png} +0 -0
- /kotonebot/kaa/sprites/{49a43af3-17e3-4434-ba4d-519775ccaea9.png → 6f72ab34-1c37-42d8-81c0-d0e0e573fc80.png} +0 -0
- /kotonebot/kaa/sprites/{860c3d98-e263-482f-95fb-4fc9c472e8b8.png → 736def6e-bb5e-445b-b2a6-7b8670c7cbb3.png} +0 -0
- /kotonebot/kaa/sprites/{ef2ad3df-3f89-4a48-8fc3-c70a8adc1044.png → 7609a3df-963d-4c1a-ae2d-3bc6bc7a05b9.png} +0 -0
- /kotonebot/kaa/sprites/{da7a329e-339e-4ee7-8775-bca505a1980d.png → 7669d1f5-d778-4694-87ae-9bb08e7f1265.png} +0 -0
- /kotonebot/kaa/sprites/{97c281a9-ebb0-4f54-b644-b7ed7dd65f81.png → 78c1bd53-771f-4809-bbda-39f8dd6395c1.png} +0 -0
- /kotonebot/kaa/sprites/{671b4a55-023a-434d-b29a-e844fe528e6b.png → 7c4fcaae-44c8-429b-989c-d17fd07734f9.png} +0 -0
- /kotonebot/kaa/sprites/{e23e3f19-03f6-4507-9128-115191272b90.png → 7ceec350-8f7d-4786-a477-2f0ea6b81748.png} +0 -0
- /kotonebot/kaa/sprites/{40c0f296-d29e-4e05-aaff-a212339b742e.png → 7cf3da78-a825-4e5e-8210-d6ebc3e7ab6b.png} +0 -0
- /kotonebot/kaa/sprites/{dedea21b-f21d-4621-a213-70ad03faec58.png → 7d9c26a1-69e3-4c28-b794-66c81ee171d5.png} +0 -0
- /kotonebot/kaa/sprites/{c774098e-d782-455c-80a9-5bad3713129d.png → 80feee6f-d7dd-499c-bd91-cc1e191dd945.png} +0 -0
- /kotonebot/kaa/sprites/{e0246b0d-f0cf-49d4-8423-7da46e75a575.png → 815d0dc2-5aa1-43be-8316-88d24c4c8c81.png} +0 -0
- /kotonebot/kaa/sprites/{43e72796-a644-4d9b-a817-8add011d9a75.png → 86584eea-2d90-4ab5-916a-0d29ec4edcde.png} +0 -0
- /kotonebot/kaa/sprites/{cc9483c3-c895-4dcc-b3f2-0934ba1ad42e.png → 866b2bda-fdfd-4cde-b6a5-8dc396d7bef3.png} +0 -0
- /kotonebot/kaa/sprites/{eb8d208a-dbcc-43ca-a8ac-098e1005ebfa.png → 877b36cd-07f9-425c-be1d-5e1925dc2f4f.png} +0 -0
- /kotonebot/kaa/sprites/{c70f4634-6821-4480-a615-b5f9cdc578c1.png → 8b9fddd0-4a17-4bc3-ac8f-cd6fa21058b2.png} +0 -0
- /kotonebot/kaa/sprites/{2f2a7951-a30a-4835-b9f6-3205cfdd2f05.png → 8c3c7599-0cbd-4ba8-9635-23eb6bb965b1.png} +0 -0
- /kotonebot/kaa/sprites/{e7da5988-0e83-44ad-888b-246365473f9e.png → 8fd4ee16-be10-438d-b0e0-b728723961fe.png} +0 -0
- /kotonebot/kaa/sprites/{242c088b-bc73-4d11-aa31-ee7c71477fb4.png → 901fd5e9-a0d6-4774-bafe-4b3f6dedf006.png} +0 -0
- /kotonebot/kaa/sprites/{613e9b10-b2eb-44ea-b6d9-9310c0e1bdcf.png → 90356864-a48e-4d0a-8ca3-8443524ac414.png} +0 -0
- /kotonebot/kaa/sprites/{3851303a-e3a0-46eb-aa7e-b47fb41946f7.png → 9a57d7b4-722a-4f77-9f5f-635092154ec3.png} +0 -0
- /kotonebot/kaa/sprites/{c39f2006-442b-4ab7-99bb-3dfa0673f05d.png → 9aabd1cd-fa2f-4b4d-9ca0-5cd0a02cdeeb.png} +0 -0
- /kotonebot/kaa/sprites/{fe853ac7-934e-4b4a-bcc7-b986e057dfcf.png → 9b8ebc2e-a8a3-458a-a840-54c7a5ad0119.png} +0 -0
- /kotonebot/kaa/sprites/{15f8f31e-65ce-408d-8556-b799bcefc9d4.png → 9d21d43f-4bf9-4081-951f-d208e0273e1f.png} +0 -0
- /kotonebot/kaa/sprites/{618b21ad-ab8b-436a-8eb8-bd320a198c9f.png → 9d99fa4f-ca9e-4e19-97b2-7cbef502b73c.png} +0 -0
- /kotonebot/kaa/sprites/{8c0fa5fa-cebb-4ae7-bd1c-b542c9cbf694.png → 9fb5da56-41a8-4a83-8ae8-338a124ecd03.png} +0 -0
- /kotonebot/kaa/sprites/{4b7c4221-a679-47f6-929d-0ef514894b27.png → a010517f-6ee1-4924-8385-1f5fb879e08f.png} +0 -0
- /kotonebot/kaa/sprites/{81399fd9-f254-4d0e-9775-ad451c237a4e.png → a4128c6e-4a40-4d2d-aa1d-597e70e718fb.png} +0 -0
- /kotonebot/kaa/sprites/{d19c37ff-d5c1-4316-8424-e69ccb5c2523.png → a57a3a56-8509-4e98-b438-0848e6fe091a.png} +0 -0
- /kotonebot/kaa/sprites/{379d5084-637f-45e8-8bd8-789eaa919821.png → a7755ce2-9f05-455b-8c8f-e3cf803d03de.png} +0 -0
- /kotonebot/kaa/sprites/{6e5e9cf9-80b0-4241-a222-ff50dbd89a0c.png → a7c14f96-6b0e-4065-96e7-04058c0ab1c0.png} +0 -0
- /kotonebot/kaa/sprites/{77d06f4d-8214-4306-9dc5-035c720f7256.png → a8e36d55-5095-485e-a1f1-283c362352f1.png} +0 -0
- /kotonebot/kaa/sprites/{e1b6b32b-c797-4f1d-aa2b-e7320083a9a6.png → a8efadec-4461-4a34-bf20-801ba7a545aa.png} +0 -0
- /kotonebot/kaa/sprites/{e2eb3bae-6451-40b9-bbff-90f11dca1904.png → a97fe010-f776-4ab4-88f5-4d0cceecc7ba.png} +0 -0
- /kotonebot/kaa/sprites/{d26b60f7-d15c-4563-bedc-dd6e7e4078b2.png → a9c95639-fb97-4d1c-8f8c-53337570c7a7.png} +0 -0
- /kotonebot/kaa/sprites/{49b9a298-e847-4322-99a2-c0588c3542fe.png → aaa4ac00-3da2-468d-b2c3-f69b0ccaff2c.png} +0 -0
- /kotonebot/kaa/sprites/{554c0ff6-0a05-419d-85f9-5ced260d0d2e.png → ab01298b-f04f-4b12-a256-efd1122f5fdc.png} +0 -0
- /kotonebot/kaa/sprites/{d5fd6c73-4ad8-47b5-89be-c7b137a9950f.png → ac3f3385-0281-4e45-87fa-e9b4fcf81688.png} +0 -0
- /kotonebot/kaa/sprites/{d26bf52c-cb1b-4ebf-9c03-ff3f2d245959.png → acb66482-748f-487f-bcd3-a400fb9b70ba.png} +0 -0
- /kotonebot/kaa/sprites/{08946997-4e9e-4242-95e1-e988fa96b919.png → b0404967-c93e-4900-beeb-26717ae13c4a.png} +0 -0
- /kotonebot/kaa/sprites/{9f9003ba-468f-406f-a82f-1b7a23ef347c.png → b0a9ad98-2e2c-4dbb-b1e6-c93a4f6f92d4.png} +0 -0
- /kotonebot/kaa/sprites/{e5297036-9934-44a4-a761-a6a49ae06e3e.png → b54448c1-460d-4ab3-b220-ff4c82e7cea5.png} +0 -0
- /kotonebot/kaa/sprites/{c7e3736a-0e0f-474a-9386-f58292a45b92.png → b5e1e9ee-eab0-476c-8e35-e9760935942c.png} +0 -0
- /kotonebot/kaa/sprites/{e46e1b6d-6702-46bf-a07e-aec8d183453f.png → b6040e31-b183-4520-ad2a-966612c60f86.png} +0 -0
- /kotonebot/kaa/sprites/{ffda716c-2903-4ec7-8c59-aab5b8ad10bb.png → b64f8cc6-4ef9-4f43-95e6-d508364faff1.png} +0 -0
- /kotonebot/kaa/sprites/{9e369992-ea8c-4c15-88d3-1344319978b0.png → bd408633-6ca9-4cb0-9b11-695616496b48.png} +0 -0
- /kotonebot/kaa/sprites/{f7c34ab6-c165-48b7-ad5a-0b60613ce1bc.png → bdd7e868-0cb2-4da2-9055-6cf9eae5869b.png} +0 -0
- /kotonebot/kaa/sprites/{9ce7d48e-295d-47b2-96eb-f3ce697c1b37.png → bfa32df6-16ba-406a-be3c-7e5248d9cd0c.png} +0 -0
- /kotonebot/kaa/sprites/{cec49286-3d48-4fe0-8911-6a1b17d1ac20.png → c07de7e7-263b-4b82-ab04-e31bec40b524.png} +0 -0
- /kotonebot/kaa/sprites/{9cbf7f6e-fe77-463b-9c60-495dc823510a.png → c1e18236-0488-4025-b2f6-ce75d13b861f.png} +0 -0
- /kotonebot/kaa/sprites/{20b01af5-907b-4d49-9f5b-a3700ca9c0c3.png → c4cc6dcd-6301-4d02-942e-8e49475ec3e9.png} +0 -0
- /kotonebot/kaa/sprites/{51a3ed29-92b9-4429-9e50-783d1b8dc6a7.png → c689a3e0-d0ad-49e7-b5d9-66ff7e34fd2a.png} +0 -0
- /kotonebot/kaa/sprites/{14d09c44-3897-4c81-b615-19c35d0f3793.png → c7fb79d2-9335-4d86-afaf-abc537394cbf.png} +0 -0
- /kotonebot/kaa/sprites/{5b75cae4-a853-402c-acec-edbfef94342a.png → cae49b6a-cc4e-49d9-9dd6-d528510bd262.png} +0 -0
- /kotonebot/kaa/sprites/{b003bef5-53db-4032-b1bd-d5075de365a8.png → cc6e472b-7f6f-4f34-8fb4-c2c15913cda5.png} +0 -0
- /kotonebot/kaa/sprites/{5dc2dca3-48bd-4eee-af89-1a1d30593bd5.png → cdb09691-5c2a-4bb4-8ae8-01fd865ba3e6.png} +0 -0
- /kotonebot/kaa/sprites/{019273c4-22ce-486f-8a7d-dbc78f13dcac.png → ceb65e4a-c59b-4580-9360-ba1fd600846a.png} +0 -0
- /kotonebot/kaa/sprites/{5d5cb13b-c1fd-4808-b352-b21291a9ff0b.png → ced15f67-03ed-48a7-a0a5-24d29ec9a8f9.png} +0 -0
- /kotonebot/kaa/sprites/{4d355e36-9169-43e4-bd58-2836ee3e56e0.png → d04c4883-0d15-4bd8-918e-065db19bf145.png} +0 -0
- /kotonebot/kaa/sprites/{338b699a-d556-4b80-a577-123442c3db45.png → d09a9154-0280-40f9-9802-2d2fa01c03df.png} +0 -0
- /kotonebot/kaa/sprites/{312dbd82-5457-474a-91ce-511f0e4e9c80.png → d25bd995-1139-4909-84e2-85260a27d46f.png} +0 -0
- /kotonebot/kaa/sprites/{610348f2-6262-4cd1-8fc3-e7470f85580c.png → d8caa8b8-6f45-4bcc-89c6-4d4522db14c0.png} +0 -0
- /kotonebot/kaa/sprites/{64be274e-e8ad-4938-84c1-5d8aabcd10d8.png → da1a9ce5-0032-413c-ae26-2a5d27efe7ef.png} +0 -0
- /kotonebot/kaa/sprites/{c90b582c-8570-48b4-98c0-62d5b067ca2c.png → da8f3c98-de95-4be0-88e7-de5e7ef90649.png} +0 -0
- /kotonebot/kaa/sprites/{5f0c2a57-efd0-4094-9f71-6f6fe97316f6.png → dbc0975e-e9f2-4db8-a0df-f16711606165.png} +0 -0
- /kotonebot/kaa/sprites/{fe35655e-701b-4081-8df8-c17a7252acef.png → dc826aa1-4d2f-49f0-9c78-cec45b77f49d.png} +0 -0
- /kotonebot/kaa/sprites/{86062e91-d6c1-44cf-9f8c-26a8b9dd8686.png → de87abe3-482a-4fc0-ace2-bc436036ddf5.png} +0 -0
- /kotonebot/kaa/sprites/{3f5907a9-7fe4-4f46-8e46-a96ac7fa3923.png → e26d7a9a-f8fe-4092-b3fc-0647b34c984e.png} +0 -0
- /kotonebot/kaa/sprites/{5824ef5f-6776-402c-b78c-ae79cc4cc878.png → e2929240-db44-42fb-be5a-3a397c2fe2ac.png} +0 -0
- /kotonebot/kaa/sprites/{7a9d1c39-b306-4cb0-be2f-7a5963099949.png → e3e6fe61-afa3-4a6b-810b-c87d599f5868.png} +0 -0
- /kotonebot/kaa/sprites/{5d94e628-82ff-4531-b70a-b13297491bea.png → e61a092f-1717-4672-943b-71f061ce2717.png} +0 -0
- /kotonebot/kaa/sprites/{dff74cce-ba2d-44aa-b924-183259080a32.png → e6f0ca18-546c-4463-96b6-5866fe4d1ff2.png} +0 -0
- /kotonebot/kaa/sprites/{76bde19a-4b1b-4e52-86d9-f56be7529c71.png → e81bb7c7-aae0-4280-86e7-2c15fba205f1.png} +0 -0
- /kotonebot/kaa/sprites/{0d60ce10-20ce-4980-8172-b6bac08d6258.png → e8e1bb95-6260-4e60-aa5a-972869fa2791.png} +0 -0
- /kotonebot/kaa/sprites/{35319890-98e3-4f75-b969-6b8576ef668d.png → ec96a180-1c0f-4bd2-8b21-6b31eac39ef5.png} +0 -0
- /kotonebot/kaa/sprites/{497e7930-f423-457a-8168-b1a1532bb1e9.png → ed82be6d-7c5d-42fd-bdd1-8ad20076f480.png} +0 -0
- /kotonebot/kaa/sprites/{b641a122-4734-43e1-b22f-468464a0cff1.png → f188d7ad-cd46-4342-ae70-cc2d5abb87d9.png} +0 -0
- /kotonebot/kaa/sprites/{cef78712-d9ae-4d6e-8d7d-d047d48fbb98.png → f22e46af-f72e-4978-a4be-8cfa68e4e85e.png} +0 -0
- /kotonebot/kaa/sprites/{998fc84a-af71-4fa5-8aa4-e0bfeb9c53ea.png → f7c89d72-ca8e-46a9-ab49-b7775dfbf37f.png} +0 -0
- /kotonebot/kaa/sprites/{52d3438b-afae-4c7a-abe5-7ed530c7558c.png → f87af019-34ee-428d-8d11-dc77a2c41be5.png} +0 -0
- /kotonebot/kaa/sprites/{8669ce44-dec7-47c2-aafd-3f2fbfd1d083.png → fa57193f-5654-4b9d-8a9a-67211e7b5aff.png} +0 -0
- /kotonebot/kaa/sprites/{81526e97-1b8d-433f-a5c9-907e4e8c85cd.png → fd5890f6-f437-47cc-85d6-54745864075c.png} +0 -0
- /kotonebot/kaa/sprites/{964c6b90-f526-4199-9523-d8124373a56b.png → ffacd169-0e30-4e43-a4dc-46dd85711ba7.png} +0 -0
- {ksaa-2025.6.28.0.dist-info → ksaa-2025.7.5.0.dist-info}/WHEEL +0 -0
- {ksaa-2025.6.28.0.dist-info → ksaa-2025.7.5.0.dist-info}/entry_points.txt +0 -0
- {ksaa-2025.6.28.0.dist-info → ksaa-2025.7.5.0.dist-info}/licenses/LICENSE +0 -0
- {ksaa-2025.6.28.0.dist-info → ksaa-2025.7.5.0.dist-info}/top_level.txt +0 -0
kotonebot/client/device.py
CHANGED
|
@@ -29,31 +29,6 @@ class HookContextManager:
|
|
|
29
29
|
def __exit__(self, exc_type, exc_value, traceback):
|
|
30
30
|
self.device.screenshot_hook_after = self.old_func
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
class PinContextManager:
|
|
34
|
-
def __init__(self, device: 'Device'):
|
|
35
|
-
self.device = device
|
|
36
|
-
self.old_hook = device.screenshot_hook_before
|
|
37
|
-
self.memo = None
|
|
38
|
-
|
|
39
|
-
def __hook(self) -> MatLike:
|
|
40
|
-
if self.memo is None:
|
|
41
|
-
self.memo = self.device.screenshot_raw()
|
|
42
|
-
return self.memo
|
|
43
|
-
|
|
44
|
-
def __enter__(self):
|
|
45
|
-
self.device.screenshot_hook_before = self.__hook
|
|
46
|
-
return self
|
|
47
|
-
|
|
48
|
-
def __exit__(self, exc_type, exc_value, traceback):
|
|
49
|
-
self.device.screenshot_hook_before = self.old_hook
|
|
50
|
-
|
|
51
|
-
def update(self) -> None:
|
|
52
|
-
"""
|
|
53
|
-
更新记住的截图
|
|
54
|
-
"""
|
|
55
|
-
self.memo = self.device.screenshot_raw()
|
|
56
|
-
|
|
57
32
|
class Device:
|
|
58
33
|
def __init__(self, platform: str = 'unknown') -> None:
|
|
59
34
|
self.screenshot_hook_after: Callable[[MatLike], MatLike] | None = None
|
|
@@ -356,16 +331,6 @@ class Device:
|
|
|
356
331
|
"""
|
|
357
332
|
return HookContextManager(self, func)
|
|
358
333
|
|
|
359
|
-
@deprecated('改用 @task/@action 装饰器中的 screenshot_mode 参数')
|
|
360
|
-
def pinned(self) -> PinContextManager:
|
|
361
|
-
"""
|
|
362
|
-
记住下次截图结果,并将截图调整为手动挡。
|
|
363
|
-
之后截图都会返回记住的数据,节省重复截图时间。
|
|
364
|
-
|
|
365
|
-
调用返回对象中的 PinContextManager.update() 可以立刻更新记住的截图。
|
|
366
|
-
"""
|
|
367
|
-
return PinContextManager(self)
|
|
368
|
-
|
|
369
334
|
@property
|
|
370
335
|
def screen_size(self) -> tuple[int, int]:
|
|
371
336
|
"""
|
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/game_ui/toolbar.py
CHANGED
|
@@ -34,10 +34,11 @@ def toolbar_menu(critical: Literal[True]) -> TemplateMatchResult:
|
|
|
34
34
|
"""寻找工具栏上的菜单按钮。若未找到,则抛出异常。"""
|
|
35
35
|
...
|
|
36
36
|
|
|
37
|
+
_TOOLBAR_THRESHOLD = 0.6
|
|
37
38
|
@action('工具栏按钮.寻找菜单', screenshot_mode='manual-inherit')
|
|
38
39
|
def toolbar_menu(critical: bool = False):
|
|
39
40
|
device.screenshot()
|
|
40
41
|
if critical:
|
|
41
|
-
return image.expect_wait(R.Common.ButtonToolbarMenu, preprocessors=[WhiteFilter()])
|
|
42
|
+
return image.expect_wait(R.Common.ButtonToolbarMenu, preprocessors=[WhiteFilter()], threshold=_TOOLBAR_THRESHOLD)
|
|
42
43
|
else:
|
|
43
|
-
return image.find(R.Common.ButtonToolbarMenu, preprocessors=[WhiteFilter()])
|
|
44
|
+
return image.find(R.Common.ButtonToolbarMenu, preprocessors=[WhiteFilter()], threshold=_TOOLBAR_THRESHOLD)
|
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,25 @@
|
|
|
1
1
|
WHATS_NEW = """
|
|
2
2
|
# 更新日志
|
|
3
3
|
## kaa
|
|
4
|
+
### v2025.7.5.0
|
|
5
|
+
脚本:
|
|
6
|
+
* [修复] 修复有几率无法识别到进行中培育的问题(#50d1403)
|
|
7
|
+
* [修复] 修复分辨率缩放导致无法识别到菜单按钮(#f2eadad)
|
|
8
|
+
* [修复] 修复分辨率缩放时无法检测到工作完成状态的问题(#d9077e7)
|
|
9
|
+
|
|
10
|
+
框架:
|
|
11
|
+
* [重构] 移除 Device.pinned 方法(#5306f5c)
|
|
12
|
+
|
|
13
|
+
### v2025.7.3.0
|
|
14
|
+
启动器:
|
|
15
|
+
* [新增] 新启动器现在支持安装指定版本与指定补丁(#456019b)
|
|
16
|
+
* [新增] 自动更新可禁用(#3f88c3a)
|
|
17
|
+
* [新增] 启动器 C++ EXE 跳板程序(#b377b84)
|
|
18
|
+
* [新增] 新启动器(#c4b93f4)
|
|
19
|
+
|
|
20
|
+
其他:
|
|
21
|
+
* [其他] Git 记录提取工具支持 bootstrap scope(#66ea531)
|
|
22
|
+
|
|
4
23
|
### v2025.6.28.0
|
|
5
24
|
脚本:
|
|
6
25
|
* [修复] 修正 debug_entry 脚本路径处理逻辑(#b53a055)
|
|
Binary file
|
kotonebot/kaa/resources/game.db
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|