ksaa 2025.7.9.0__py3-none-any.whl → 2025.7.20.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/backend/context/context.py +4 -4
- kotonebot/errors.py +5 -1
- kotonebot/kaa/main/gr.py +131 -34
- kotonebot/kaa/main/kaa.py +3 -0
- kotonebot/kaa/metadata.py +26 -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-shro-3-012_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-012_1.png +0 -0
- kotonebot/kaa/tasks/R.py +126 -126
- kotonebot/kaa/tasks/daily/purchase.py +3 -2
- kotonebot/kaa/tasks/produce/in_purodyuusu.py +3 -3
- {ksaa-2025.7.9.0.dist-info → ksaa-2025.7.20.0.dist-info}/METADATA +1 -1
- {ksaa-2025.7.9.0.dist-info → ksaa-2025.7.20.0.dist-info}/RECORD +145 -143
- /kotonebot/kaa/sprites/{459851f5-fa20-45c4-a6d2-1018b3976fcd.png → 0002785c-3caa-4c8f-8d47-f29aee04a588.png} +0 -0
- /kotonebot/kaa/sprites/{d6d6229a-2345-4fe7-b2c5-109fcdb37c39.png → 04425af8-ba28-407d-ad18-8c3a2483025d.png} +0 -0
- /kotonebot/kaa/sprites/{443a5dbf-e2fb-4d34-bb09-c21e1437f715.png → 04feeecc-a607-402d-bbc4-a71af87c7fc2.png} +0 -0
- /kotonebot/kaa/sprites/{bdd0e8f8-3d35-48e8-b735-66eaf2ece2e6.png → 0554264f-0474-44d0-9209-8135d8840c53.png} +0 -0
- /kotonebot/kaa/sprites/{93f03304-5609-4f4f-9ac8-a46e7b883960.png → 05a23a4a-9b93-4fbd-b4e9-15a7c4a91fdc.png} +0 -0
- /kotonebot/kaa/sprites/{4ff46fa5-fe9e-4103-8012-451adc14dc43.png → 0a4c6cbe-f42e-4301-9c1a-101fc33421d2.png} +0 -0
- /kotonebot/kaa/sprites/{4f891dc4-71c0-4492-a8d1-0c52978e75e1.png → 0aa4472c-b533-46cc-a072-9d165d955424.png} +0 -0
- /kotonebot/kaa/sprites/{bc1c640a-87d8-47af-9fcc-8681acac7b27.png → 0e29489c-6728-46cd-bd13-2b9d9e74b2da.png} +0 -0
- /kotonebot/kaa/sprites/{7256a95e-24b8-40fd-bd8e-73a1572c3f93.png → 0e4b4481-6805-4a1b-a3d8-913681968662.png} +0 -0
- /kotonebot/kaa/sprites/{17d2730b-e56e-4956-973d-5f822490a2c5.png → 10a329df-2515-4551-a130-07e86058abdf.png} +0 -0
- /kotonebot/kaa/sprites/{133dbdd9-23fa-4157-9f9e-fd1728207bd0.png → 10d9a788-24a2-42e1-9284-78f507986606.png} +0 -0
- /kotonebot/kaa/sprites/{3c41fb45-6400-4818-9066-e03d60d2a895.png → 12151e09-e5f1-4b1d-a211-63cb300cb082.png} +0 -0
- /kotonebot/kaa/sprites/{585c7846-f353-448f-8eb9-1ceafec94555.png → 12d0271c-1a86-4d2c-b379-b7df847fe20b.png} +0 -0
- /kotonebot/kaa/sprites/{c1274e01-2cc7-432f-b244-65ffe8269656.png → 131fb7e1-6eb9-4722-9943-76ff05c5baee.png} +0 -0
- /kotonebot/kaa/sprites/{f496a454-5cf5-4b6b-aedb-1dad58c85035.png → 143db8eb-fdde-4de0-a946-a14123b9262e.png} +0 -0
- /kotonebot/kaa/sprites/{e916a5ca-287c-4cbe-93ca-22b439c5ffab.png → 15fe6944-396c-467b-80db-476bbdf65a80.png} +0 -0
- /kotonebot/kaa/sprites/{3820d53e-5b87-4a35-9472-e90498225853.png → 1609d037-a3fc-485b-96c6-cf1790434c01.png} +0 -0
- /kotonebot/kaa/sprites/{314bc3ab-8c73-4517-ae7c-75d21ac61448.png → 1737a9e0-f8c4-416e-bbad-cb97a658ae9a.png} +0 -0
- /kotonebot/kaa/sprites/{4c235498-622f-4f74-9ebb-df3fcd3306ab.png → 183df82f-acea-4d40-87a8-18fc8ddab6d0.png} +0 -0
- /kotonebot/kaa/sprites/{86b3bab1-c5f6-48b2-b810-c3ec55c32314.png → 1aed664e-ceb3-4a1d-a338-df08dc8ebbd3.png} +0 -0
- /kotonebot/kaa/sprites/{bcf2f87a-de7f-4fb9-aa6c-0b4f6bff921e.png → 1bb92c94-af17-492e-9d22-393c12b7f346.png} +0 -0
- /kotonebot/kaa/sprites/{bec6c0cf-40f6-446d-85b3-c692d3322a51.png → 1f9f101b-2647-4d14-931e-7a8307495475.png} +0 -0
- /kotonebot/kaa/sprites/{e19c5f10-5f93-4431-9bf3-4f92512eab6e.png → 20733b9b-1df7-42af-ab55-3364e8623602.png} +0 -0
- /kotonebot/kaa/sprites/{d477e49c-37cc-4e71-a8e6-6633f044260a.png → 25f18ff9-dbae-4aed-87b4-c05ca6c4ebf4.png} +0 -0
- /kotonebot/kaa/sprites/{f165bf01-9e9d-4afb-87d9-4a26318140cf.png → 2bb9dbf7-6cb2-426a-a35c-7228a1320220.png} +0 -0
- /kotonebot/kaa/sprites/{ffaffa14-22dd-4397-8dc1-7b94fd4cf06b.png → 2cea06ca-99f6-4bc5-8dd0-2bba80b07b17.png} +0 -0
- /kotonebot/kaa/sprites/{06bb9a6e-1dbe-48db-91d7-51d9fc3ffcce.png → 2cff833f-10bd-478c-8760-99162c71e9e3.png} +0 -0
- /kotonebot/kaa/sprites/{bf19069d-e044-4f76-93f7-f2ecd3214e47.png → 2dab2877-c6c3-45d9-849f-fb2d79b7b74e.png} +0 -0
- /kotonebot/kaa/sprites/{d1e5672d-df91-4316-984c-48550c5d1931.png → 32907971-0e98-4adc-91b8-ac0308c11c3c.png} +0 -0
- /kotonebot/kaa/sprites/{5a87228a-ec5d-4ffc-951a-1454c9c03bdc.png → 3645c21a-acd8-4ec4-a286-d9031736342c.png} +0 -0
- /kotonebot/kaa/sprites/{ae146d94-5e69-4970-b175-d7c8c4f9a9cd.png → 377857a9-c37f-4a90-afa9-00c4ff7b24ae.png} +0 -0
- /kotonebot/kaa/sprites/{f6c3bd48-fe1e-4fe3-bf58-13422b5b4a99.png → 38c0ed08-5af3-4fca-a37f-27d66fd35a4c.png} +0 -0
- /kotonebot/kaa/sprites/{48ebb790-2310-436d-a31c-dba4db034cbc.png → 39f88061-a997-4a8a-b09e-4a2425f4a83a.png} +0 -0
- /kotonebot/kaa/sprites/{64938ad2-442f-41eb-a544-4d2611e8012f.png → 3a595ec9-d813-4c09-b8b8-be8f5da88faa.png} +0 -0
- /kotonebot/kaa/sprites/{f4227a80-f62d-4daf-83d0-c7b5500088ee.png → 3e34e821-ae69-49aa-9d04-bc34b3037cd5.png} +0 -0
- /kotonebot/kaa/sprites/{e353b4cb-ea6d-4fc4-91ec-c19582e9507c.png → 3e613561-8dbd-4094-9889-53f08541a716.png} +0 -0
- /kotonebot/kaa/sprites/{ed4a318e-f69a-4fb9-9853-9746f01c6015.png → 3fc47270-febf-492e-b8fc-0a9793bc0d56.png} +0 -0
- /kotonebot/kaa/sprites/{65223004-722e-4003-af09-c7769e8a7cb2.png → 401966c8-2095-4eef-b92a-764122de02d9.png} +0 -0
- /kotonebot/kaa/sprites/{a5c582f5-3627-44be-b574-a4e4287376e0.png → 40f04ad0-44c0-4913-89aa-bc466bfd6ace.png} +0 -0
- /kotonebot/kaa/sprites/{29119167-eb9c-4c35-9c63-9c9967f85163.png → 41f0e90a-a352-450c-a788-0303d038227a.png} +0 -0
- /kotonebot/kaa/sprites/{2b8385d8-ea7e-4675-9d16-57b905a18d90.png → 4622e955-7bb1-450d-a776-01543540fde3.png} +0 -0
- /kotonebot/kaa/sprites/{c67852a2-30a9-4fd6-a4c2-83870a658998.png → 487ae483-2787-4982-93b0-4847665683e9.png} +0 -0
- /kotonebot/kaa/sprites/{b6680d31-8552-4111-bc39-0867c06bf94a.png → 49ccf947-13a5-4839-8f85-d0fe40094e77.png} +0 -0
- /kotonebot/kaa/sprites/{9d86ab77-de0b-433d-9b0e-5aba283309a6.png → 562f176f-af1e-4352-aeed-62e362177f9f.png} +0 -0
- /kotonebot/kaa/sprites/{33e4e6c9-d245-4174-8303-04019ce20136.png → 5aef61f9-d616-42f2-ae8d-5c5a033231d3.png} +0 -0
- /kotonebot/kaa/sprites/{9eb202c8-c61a-4918-beb9-b0f03739b0b3.png → 5d3b3a20-89bb-4cf2-9973-25581c32e91c.png} +0 -0
- /kotonebot/kaa/sprites/{38e35291-2a94-4261-9b58-80d7b17165c9.png → 610ea09a-d623-428f-ac97-1b51dc5e9202.png} +0 -0
- /kotonebot/kaa/sprites/{e0555145-9446-4ebe-965b-f46b458e5681.png → 63cd694d-343e-468d-a53f-360c97f71ee6.png} +0 -0
- /kotonebot/kaa/sprites/{b6c637bf-5fdd-4e68-b4d8-b403bf611f3b.png → 64298c97-baac-48b9-be7d-cb14091aa3cb.png} +0 -0
- /kotonebot/kaa/sprites/{83c67f2a-0f73-4238-a5a8-8ebb839ed99a.png → 6582463d-b4fa-40a1-b771-664c7f71fe9c.png} +0 -0
- /kotonebot/kaa/sprites/{992473c3-df0a-4c72-8134-f2aac9e7b0f6.png → 67f00dd1-86c9-4a49-a37c-87879171a46a.png} +0 -0
- /kotonebot/kaa/sprites/{04be14b5-4169-4b3e-ab14-224db52c9a39.png → 681157d7-b37f-442f-b784-86fa9029ecdb.png} +0 -0
- /kotonebot/kaa/sprites/{a914da74-9752-42be-913b-86514eb4b589.png → 6ac4a3b5-66d2-4429-8cd1-945fbb48280c.png} +0 -0
- /kotonebot/kaa/sprites/{debc6a94-9bf1-46d7-b0b0-0c55cb367f12.png → 6cacdb8f-2ea3-4e3c-a124-b957b75ea427.png} +0 -0
- /kotonebot/kaa/sprites/{b9e19bda-3793-4cf4-928a-fc43642b32e6.png → 6e59d072-06f8-488f-a453-8ba60a05d691.png} +0 -0
- /kotonebot/kaa/sprites/{231b3e86-cfc5-4e08-803b-63ed680ab1ad.png → 70671b9e-9ebb-4dee-bc5a-dbcb70364adf.png} +0 -0
- /kotonebot/kaa/sprites/{872838c5-47c6-4f78-b105-0a72b5459f16.png → 71d6a37d-45df-456f-b673-d1e8b35ee619.png} +0 -0
- /kotonebot/kaa/sprites/{c705eece-67d8-4017-a4d9-a7f1337f67be.png → 731ed76d-6d6c-48b9-82c3-045cc1ecc419.png} +0 -0
- /kotonebot/kaa/sprites/{26dd326a-a6da-4350-8140-217e9d6a6109.png → 79226566-26e2-4c2f-8f6a-4e4deb9fa9ea.png} +0 -0
- /kotonebot/kaa/sprites/{e6554fee-c6fd-49ee-8c32-b4932fc701da.png → 7f4accdd-bd72-45e6-8469-692e27986486.png} +0 -0
- /kotonebot/kaa/sprites/{659a1775-7001-4add-96e9-292693a26b60.png → 83f9e9a0-54dd-4601-8e54-3091c2892e67.png} +0 -0
- /kotonebot/kaa/sprites/{b1878d2b-4908-4342-b395-864aafa5c54b.png → 87c7532f-2394-403e-a6d8-7a216043ec13.png} +0 -0
- /kotonebot/kaa/sprites/{cba7528d-ae17-4a37-b388-6f86e1a590f4.png → 88945ecf-9ac5-46dc-8af6-b21dbfded665.png} +0 -0
- /kotonebot/kaa/sprites/{784a91b2-4d24-461f-8bd3-2f02b9bc193f.png → 89d3c0a6-266e-486e-998d-ecd0d2536814.png} +0 -0
- /kotonebot/kaa/sprites/{02cf0df9-37d6-4387-b8eb-c92589264c2a.png → 8a2938ad-5657-4f66-8447-4bc7fa45b857.png} +0 -0
- /kotonebot/kaa/sprites/{f4af8fb2-6270-4b75-8b24-d0e49daebac1.png → 8e0964c4-6e34-43cb-a333-d60bceae7f11.png} +0 -0
- /kotonebot/kaa/sprites/{f2846992-402e-4f50-b74e-91d6f3b8994d.png → 8fb17c7f-778d-4cd5-8d2f-dbf21d264297.png} +0 -0
- /kotonebot/kaa/sprites/{de069910-6085-45a9-ba96-64bc7aeead77.png → 9169bf8e-5907-42e5-b102-47da3bf9a0b1.png} +0 -0
- /kotonebot/kaa/sprites/{5e27d1c5-cc3f-4aee-8d79-69c09206fa3d.png → 92a42da1-d8d2-4233-b6d0-5997a72f3d03.png} +0 -0
- /kotonebot/kaa/sprites/{0910c5f3-7f72-4385-967c-4bf226c9861b.png → 94021aa4-fb87-41e7-920a-988a360f8321.png} +0 -0
- /kotonebot/kaa/sprites/{b4905122-7d97-4561-a14a-b8a9a5cd9227.png → 9449ff36-7adb-42d5-b89d-bf9147d62811.png} +0 -0
- /kotonebot/kaa/sprites/{4f4e3cf3-b1d9-436b-9477-5f2244c20d6b.png → 951ae4be-40f3-4ccc-8578-77aca7f25eef.png} +0 -0
- /kotonebot/kaa/sprites/{131d5c1b-70b3-47d3-b6d6-318045629037.png → 966bcfd4-fefc-4704-907d-45bc6098d3f4.png} +0 -0
- /kotonebot/kaa/sprites/{46c520e7-7b97-43be-8cc2-21e478b5d844.png → 97a543a8-a859-4a1e-8e33-602f600db389.png} +0 -0
- /kotonebot/kaa/sprites/{b534423c-2024-4234-9886-f49e17dd96e7.png → 9a9d9398-15df-46ea-a247-04ba01f61603.png} +0 -0
- /kotonebot/kaa/sprites/{cc1767ec-77db-49ac-8c9e-f48d1fb7b071.png → 9b696383-10dd-4a35-8546-1ccdb8891373.png} +0 -0
- /kotonebot/kaa/sprites/{6eb959e1-ee64-4fa6-a20f-8ee4e51f2c6a.png → 9d80c1ef-0f42-4622-ab9a-bfcc077dace6.png} +0 -0
- /kotonebot/kaa/sprites/{3e9adf0f-f6c5-4d68-9667-97ea2f82bb51.png → 9dbc5d76-8c6a-4638-b0c2-eba79542ec58.png} +0 -0
- /kotonebot/kaa/sprites/{2cd2047f-91af-4632-8cb2-eb2fc4b4c808.png → 9dfa46c9-54ec-4dd7-8f2e-e1e66c1206f1.png} +0 -0
- /kotonebot/kaa/sprites/{d4b1e48b-bf9c-4f44-9ddb-3af8eb4ea464.png → 9e0492b7-3b66-48a2-b589-91e7fd16106d.png} +0 -0
- /kotonebot/kaa/sprites/{3ef649e7-c03a-40d1-9a76-653faaf799df.png → a009c9de-029e-4999-b728-e6877374325a.png} +0 -0
- /kotonebot/kaa/sprites/{c65d71af-ffb3-4992-b954-c59ae48615b8.png → a3384f38-334c-440a-ab06-405bad293bab.png} +0 -0
- /kotonebot/kaa/sprites/{0c4ee900-3e44-4e37-a199-32d66daa2025.png → a4553bb1-27b9-47c4-8f51-1cff2129df8e.png} +0 -0
- /kotonebot/kaa/sprites/{4867e835-c805-463e-9a53-1e677e3d140f.png → a514ce10-bff1-4aa0-9625-bf560dcb8be5.png} +0 -0
- /kotonebot/kaa/sprites/{77193249-7e2a-4652-ab6d-a463350ca226.png → a5d3efa4-ec3e-4637-835a-147af973bbf8.png} +0 -0
- /kotonebot/kaa/sprites/{08444afd-90d4-43ac-b3ee-128a5bdef4a2.png → a77c1724-eb8f-4a1a-8997-516deb75ae78.png} +0 -0
- /kotonebot/kaa/sprites/{4b8ebe86-7a0d-474a-abac-b4a45fda5e88.png → b169172d-8ce2-432a-bed6-1dfc30bcc95c.png} +0 -0
- /kotonebot/kaa/sprites/{97e96ecf-e51b-4a09-ab11-3c164196747f.png → b25627d6-3352-4fe8-93c2-b653efe104d4.png} +0 -0
- /kotonebot/kaa/sprites/{712e9223-4dd2-4ff6-887b-4182fd243d78.png → b66e13a1-636c-4478-9d72-7d200ff670a9.png} +0 -0
- /kotonebot/kaa/sprites/{540a64f4-8111-4df4-abfe-0e62e0f8c7af.png → b6f5243b-cfb4-42d2-b4eb-2fd1a9d33ab7.png} +0 -0
- /kotonebot/kaa/sprites/{02d4e179-912e-4e1f-ba7d-ea37fe87279e.png → bc01675d-453c-43f2-9075-f9567c8aa6f9.png} +0 -0
- /kotonebot/kaa/sprites/{34cce4b7-53fe-4ea2-82d8-d31fe7b9abcd.png → bcc433e0-8a4e-455f-b625-4583cea19c1c.png} +0 -0
- /kotonebot/kaa/sprites/{4f3d2710-5626-4471-9b21-cd01b8c542d1.png → be83e205-8ec5-452f-b42b-b98156516aa8.png} +0 -0
- /kotonebot/kaa/sprites/{d356fc84-a8c0-4d0f-a3ed-c7ff5ccd276c.png → c3562fef-44f7-43d2-a4e6-e7ee21f8bdc5.png} +0 -0
- /kotonebot/kaa/sprites/{bc25ed87-50a7-4aa8-b743-505450677b00.png → c5774fb4-be11-4b28-8f58-299ae8872cc1.png} +0 -0
- /kotonebot/kaa/sprites/{dea4c704-5739-423f-a15c-f31a4a93d64f.png → c577c19e-aa5d-4670-b44c-1c0b3d72451a.png} +0 -0
- /kotonebot/kaa/sprites/{0cfd52cc-1f38-4804-bc1f-8da9cc51d969.png → c92a2935-cf41-4f56-911a-bc40f122cbf3.png} +0 -0
- /kotonebot/kaa/sprites/{6a202eb6-dd41-4675-a840-99dde2b2efa4.png → cab0b1ff-b40a-42a8-b799-75e309b2dee3.png} +0 -0
- /kotonebot/kaa/sprites/{7098fbf7-b8cc-4933-bfec-12a2ac98e38c.png → d14633f5-9682-4b59-a4ef-e92a2d26d86b.png} +0 -0
- /kotonebot/kaa/sprites/{43226a61-3d61-4acb-afbb-812bf9e97843.png → d54fc8f5-e50d-45dd-b123-92414f93488c.png} +0 -0
- /kotonebot/kaa/sprites/{b26e3c78-a6be-4ad1-8992-c3245b1a6f9b.png → d56feb26-d560-423f-b5f8-dc06f7a3c8a1.png} +0 -0
- /kotonebot/kaa/sprites/{efe68984-8dbc-417e-924c-87c6860c58ef.png → d627ba81-9c86-4b53-9ab9-86c8748d8daa.png} +0 -0
- /kotonebot/kaa/sprites/{6626694b-1394-44af-b76b-791c5bb2428b.png → d6314592-b8a4-4025-9875-b135bf986cf7.png} +0 -0
- /kotonebot/kaa/sprites/{f60c40a1-750b-41ac-9d24-2d7ffce44166.png → d81b7022-5c81-4533-b949-7e9d75a5b8b4.png} +0 -0
- /kotonebot/kaa/sprites/{d953cdee-08b5-45fb-908b-2644220b0f07.png → d83f2631-b9d8-4fd6-ab1c-50b0a013f3f0.png} +0 -0
- /kotonebot/kaa/sprites/{037cb117-8521-4670-b3ec-ee0e260c1d62.png → dcc214f3-9707-4a2c-aaff-3834e6f12f0b.png} +0 -0
- /kotonebot/kaa/sprites/{d2d99405-7927-47fc-be4c-a7591b339a6c.png → dcc2da94-2c9d-4248-bce5-731651e391ae.png} +0 -0
- /kotonebot/kaa/sprites/{ce282e51-7067-4293-ad26-24dbba172a08.png → dd699396-5500-43ad-8470-cf7a8ba013ec.png} +0 -0
- /kotonebot/kaa/sprites/{6b2e887b-e113-4280-9779-6795c2782c58.png → ddae5592-adc3-4c36-bfdd-6c6d91823296.png} +0 -0
- /kotonebot/kaa/sprites/{ae57e1fb-c42f-4401-93a1-76d4591b5fad.png → df9d09c3-8f15-4caf-bb21-f69644fb4705.png} +0 -0
- /kotonebot/kaa/sprites/{b3a41d58-f375-4882-bebb-57f72322d016.png → e04331fe-d62e-4f77-953d-78515ee5686e.png} +0 -0
- /kotonebot/kaa/sprites/{0b332c2c-aa57-4f10-aa55-8e981f2e7c27.png → e075c8cb-7eef-47cf-b9fe-9e3d1bd98e85.png} +0 -0
- /kotonebot/kaa/sprites/{73f89439-c4e3-4263-8fa7-229cde98aa99.png → e281792b-000b-4048-afb7-e8bb0dbd88b3.png} +0 -0
- /kotonebot/kaa/sprites/{c86a3385-407e-40d5-b519-1927406d5b09.png → e36ec591-8bf5-4deb-9f28-3977576de931.png} +0 -0
- /kotonebot/kaa/sprites/{3ae6e096-42e4-4ac4-ad79-6f2529925c16.png → e4a92c92-0974-40e0-b488-16ea7a4c1a29.png} +0 -0
- /kotonebot/kaa/sprites/{5422d945-aa90-443e-bf79-f8ab93ec9411.png → e89c23b0-ca58-49d1-b439-967a4a4a431d.png} +0 -0
- /kotonebot/kaa/sprites/{5cc8ccda-2cf7-4956-b67d-15327bc75ed6.png → f0952cb2-dadb-4d9a-933e-cabcbf8850fb.png} +0 -0
- /kotonebot/kaa/sprites/{a4e02797-2c5d-4860-aaa4-c20c43be7500.png → f16d6f1e-b9ff-4cff-aed3-dd150caf8f07.png} +0 -0
- /kotonebot/kaa/sprites/{aacb651b-9a3d-42a1-9fc0-9187dc8cded7.png → f217d7cf-acf5-44eb-9f99-025bbcaea866.png} +0 -0
- /kotonebot/kaa/sprites/{5b14a452-ea54-4804-8ec0-3cd916cd8e88.png → f2d8a534-8afd-475c-ac20-738c7efffc90.png} +0 -0
- /kotonebot/kaa/sprites/{2569011c-3bad-416c-b358-ceaf313507e8.png → f543861e-c3d5-4bc9-a677-47f9e86918ea.png} +0 -0
- /kotonebot/kaa/sprites/{ca42ca0c-3829-4e43-88c9-db4939cfa982.png → f5727018-9a23-40de-840e-610d6e5dfa9d.png} +0 -0
- /kotonebot/kaa/sprites/{756ac796-ce43-4ddb-989e-13bf07cbe3b7.png → f58c3a84-60ea-415b-ac63-4b534dc8cb6c.png} +0 -0
- /kotonebot/kaa/sprites/{ed4a2db1-ab2e-4b36-8d6f-5b7961501475.png → fd77088d-652a-472e-9f84-dcc83d40a6bf.png} +0 -0
- /kotonebot/kaa/sprites/{74efd362-4cc1-4b9f-8032-e5bc45c2af5c.png → fda67b44-d46d-4789-89a3-0786c60987ab.png} +0 -0
- /kotonebot/kaa/sprites/{5399e464-1ee6-406b-acab-7826e30f3fd9.png → fef40be1-5b75-4023-9977-df46cd211a86.png} +0 -0
- {ksaa-2025.7.9.0.dist-info → ksaa-2025.7.20.0.dist-info}/WHEEL +0 -0
- {ksaa-2025.7.9.0.dist-info → ksaa-2025.7.20.0.dist-info}/entry_points.txt +0 -0
- {ksaa-2025.7.9.0.dist-info → ksaa-2025.7.20.0.dist-info}/licenses/LICENSE +0 -0
- {ksaa-2025.7.9.0.dist-info → ksaa-2025.7.20.0.dist-info}/top_level.txt +0 -0
|
@@ -50,7 +50,7 @@ from kotonebot.backend.ocr import (
|
|
|
50
50
|
from kotonebot.config.manager import load_config, save_config
|
|
51
51
|
from kotonebot.config.base_config import UserConfig
|
|
52
52
|
from kotonebot.backend.core import Image, HintBox
|
|
53
|
-
from kotonebot.errors import KotonebotWarning
|
|
53
|
+
from kotonebot.errors import ContextNotInitializedError, KotonebotWarning
|
|
54
54
|
from kotonebot.backend.preprocessor import PreprocessorProtocol
|
|
55
55
|
from kotonebot.primitives import Rect
|
|
56
56
|
|
|
@@ -719,14 +719,14 @@ class Forwarded:
|
|
|
719
719
|
if name.startswith('_FORWARD_'):
|
|
720
720
|
return object.__getattribute__(self, name)
|
|
721
721
|
if self._FORWARD_getter is None:
|
|
722
|
-
raise
|
|
722
|
+
raise ContextNotInitializedError(f"Forwarded object {self._FORWARD_name} called before initialization.")
|
|
723
723
|
return getattr(self._FORWARD_getter(), name)
|
|
724
724
|
|
|
725
725
|
def __setattr__(self, name: str, value: Any):
|
|
726
726
|
if name.startswith('_FORWARD_'):
|
|
727
727
|
return object.__setattr__(self, name, value)
|
|
728
728
|
if self._FORWARD_getter is None:
|
|
729
|
-
raise
|
|
729
|
+
raise ContextNotInitializedError(f"Forwarded object {self._FORWARD_name} called before initialization.")
|
|
730
730
|
setattr(self._FORWARD_getter(), name, value)
|
|
731
731
|
|
|
732
732
|
|
|
@@ -974,7 +974,7 @@ def inject_context(
|
|
|
974
974
|
):
|
|
975
975
|
global _c
|
|
976
976
|
if _c is None:
|
|
977
|
-
raise
|
|
977
|
+
raise ContextNotInitializedError('Context not initialized')
|
|
978
978
|
_c.inject(device=device, ocr=ocr, image=image, color=color, vars=vars, debug=debug, config=config)
|
|
979
979
|
|
|
980
980
|
class ManualContextManager:
|
kotonebot/errors.py
CHANGED
|
@@ -30,4 +30,8 @@ class UnscalableResolutionError(KotonebotError):
|
|
|
30
30
|
self.target_resolution = target_resolution
|
|
31
31
|
self.screen_size = screen_size
|
|
32
32
|
super().__init__(f'Cannot scale to target resolution {target_resolution}. '
|
|
33
|
-
f'Screen size: {screen_size}')
|
|
33
|
+
f'Screen size: {screen_size}')
|
|
34
|
+
|
|
35
|
+
class ContextNotInitializedError(KotonebotError):
|
|
36
|
+
def __init__(self, msg: str = 'Context not initialized'):
|
|
37
|
+
super().__init__(msg)
|
kotonebot/kaa/main/gr.py
CHANGED
|
@@ -16,11 +16,12 @@ import gradio as gr
|
|
|
16
16
|
|
|
17
17
|
from kotonebot.kaa.main import Kaa
|
|
18
18
|
from kotonebot.kaa.db import IdolCard
|
|
19
|
+
from kotonebot.backend.context.context import vars
|
|
20
|
+
from kotonebot.errors import ContextNotInitializedError
|
|
21
|
+
from kotonebot.client.host import Mumu12Host, LeidianHost
|
|
19
22
|
from kotonebot.config.manager import load_config, save_config
|
|
20
23
|
from kotonebot.config.base_config import UserConfig, BackendConfig
|
|
21
24
|
from kotonebot.backend.context import task_registry, ContextStackVars
|
|
22
|
-
from kotonebot.backend.context.context import vars
|
|
23
|
-
from kotonebot.client.host import Mumu12Host, LeidianHost
|
|
24
25
|
from kotonebot.kaa.config import (
|
|
25
26
|
BaseConfig, APShopItems, CapsuleToysConfig, ClubRewardConfig, PurchaseConfig, ActivityFundsConfig,
|
|
26
27
|
PresentsConfig, AssignmentConfig, ContestConfig, ProduceConfig,
|
|
@@ -180,6 +181,15 @@ def _save_bug_report(
|
|
|
180
181
|
zipf.write(file_path, arcname)
|
|
181
182
|
yield f"### 打包 log 文件:{arcname}"
|
|
182
183
|
|
|
184
|
+
# 打包 conf 文件夹
|
|
185
|
+
if os.path.exists('conf'):
|
|
186
|
+
for root, dirs, files in os.walk('conf'):
|
|
187
|
+
for file in files:
|
|
188
|
+
file_path = os.path.join(root, file)
|
|
189
|
+
arcname = os.path.join('conf', os.path.relpath(file_path, 'conf'))
|
|
190
|
+
zipf.write(file_path, arcname)
|
|
191
|
+
yield f"### 打包配置文件:{arcname}"
|
|
192
|
+
|
|
183
193
|
# 写出版本号
|
|
184
194
|
zipf.writestr('version.txt', version)
|
|
185
195
|
|
|
@@ -381,8 +391,8 @@ class KotoneBotUI:
|
|
|
381
391
|
"""获取暂停按钮的状态和交互性"""
|
|
382
392
|
try:
|
|
383
393
|
text = "恢复" if vars.flow.is_paused else "暂停"
|
|
384
|
-
except
|
|
385
|
-
#
|
|
394
|
+
except ContextNotInitializedError:
|
|
395
|
+
# ContextNotInitializedError: Forwarded object vars called before initialization.
|
|
386
396
|
# TODO: vars.flow.is_paused 应该要可以在脚本正式启动前就能访问
|
|
387
397
|
text = '未启动'
|
|
388
398
|
# 如果正在停止过程中,禁用暂停按钮
|
|
@@ -408,7 +418,10 @@ class KotoneBotUI:
|
|
|
408
418
|
|
|
409
419
|
# 重新加载 Context 中的配置数据
|
|
410
420
|
from kotonebot.backend.context.context import config
|
|
411
|
-
|
|
421
|
+
try:
|
|
422
|
+
config.load()
|
|
423
|
+
except ContextNotInitializedError:
|
|
424
|
+
pass
|
|
412
425
|
|
|
413
426
|
logger.info("配置已成功重新加载")
|
|
414
427
|
return True
|
|
@@ -484,8 +497,8 @@ class KotoneBotUI:
|
|
|
484
497
|
run_btn = gr.Button("启动", scale=2)
|
|
485
498
|
pause_btn = gr.Button("暂停", scale=1)
|
|
486
499
|
|
|
487
|
-
#
|
|
488
|
-
gr.Markdown("###
|
|
500
|
+
# 快速设置控制区域
|
|
501
|
+
gr.Markdown("### 快速设置")
|
|
489
502
|
with gr.Row(elem_classes=["quick-controls-row"]):
|
|
490
503
|
purchase_quick = gr.Checkbox(
|
|
491
504
|
label="商店",
|
|
@@ -548,6 +561,20 @@ class KotoneBotUI:
|
|
|
548
561
|
elem_classes=["quick-checkbox"]
|
|
549
562
|
)
|
|
550
563
|
|
|
564
|
+
def _get_end_action_value() -> str:
|
|
565
|
+
if self.current_config.options.end_game.shutdown:
|
|
566
|
+
return "关机"
|
|
567
|
+
if self.current_config.options.end_game.hibernate:
|
|
568
|
+
return "休眠"
|
|
569
|
+
return "什么都不做"
|
|
570
|
+
|
|
571
|
+
end_action_dropdown = gr.Dropdown(
|
|
572
|
+
label="完成后:",
|
|
573
|
+
choices=["什么都不做", "关机", "休眠"],
|
|
574
|
+
value=_get_end_action_value(),
|
|
575
|
+
interactive=True
|
|
576
|
+
)
|
|
577
|
+
|
|
551
578
|
if self._kaa.upgrade_msg:
|
|
552
579
|
gr.Markdown('### 配置升级报告')
|
|
553
580
|
gr.Markdown(self._kaa.upgrade_msg)
|
|
@@ -576,7 +603,7 @@ class KotoneBotUI:
|
|
|
576
603
|
def on_pause_click(evt: gr.EventData) -> str:
|
|
577
604
|
return self.toggle_pause()
|
|
578
605
|
|
|
579
|
-
#
|
|
606
|
+
# 快速设置控制的事件处理函数
|
|
580
607
|
def save_quick_setting(field_name: str, value: bool, display_name: str):
|
|
581
608
|
"""保存快速设置并立即应用"""
|
|
582
609
|
try:
|
|
@@ -625,7 +652,7 @@ class KotoneBotUI:
|
|
|
625
652
|
outputs=[pause_btn]
|
|
626
653
|
)
|
|
627
654
|
|
|
628
|
-
#
|
|
655
|
+
# 绑定快速设置控制的事件
|
|
629
656
|
purchase_quick.change(
|
|
630
657
|
fn=lambda x: save_quick_setting('purchase', x, '商店'),
|
|
631
658
|
inputs=[purchase_quick]
|
|
@@ -667,13 +694,42 @@ class KotoneBotUI:
|
|
|
667
694
|
inputs=[upgrade_support_card_quick]
|
|
668
695
|
)
|
|
669
696
|
|
|
697
|
+
# 处理完成后操作下拉框
|
|
698
|
+
def save_quick_end_action(action: str):
|
|
699
|
+
try:
|
|
700
|
+
if action == "关机":
|
|
701
|
+
self.current_config.options.end_game.shutdown = True
|
|
702
|
+
self.current_config.options.end_game.hibernate = False
|
|
703
|
+
elif action == "休眠":
|
|
704
|
+
self.current_config.options.end_game.shutdown = False
|
|
705
|
+
self.current_config.options.end_game.hibernate = True
|
|
706
|
+
else: # 什么都不做
|
|
707
|
+
self.current_config.options.end_game.shutdown = False
|
|
708
|
+
self.current_config.options.end_game.hibernate = False
|
|
709
|
+
|
|
710
|
+
save_config(self.config, "config.json")
|
|
711
|
+
|
|
712
|
+
# 尝试热重载配置
|
|
713
|
+
if self.reload_config():
|
|
714
|
+
gr.Success(f"✓ 完成后操作已设置为 {action}")
|
|
715
|
+
else:
|
|
716
|
+
gr.Warning("⚠ 设置已保存,但重新加载失败")
|
|
717
|
+
except Exception as e:
|
|
718
|
+
gr.Error(f"✗ 保存失败:{str(e)}")
|
|
719
|
+
|
|
720
|
+
end_action_dropdown.change(
|
|
721
|
+
fn=save_quick_end_action,
|
|
722
|
+
inputs=[end_action_dropdown]
|
|
723
|
+
)
|
|
724
|
+
|
|
670
725
|
# 添加定时器,分别更新按钮状态和任务状态
|
|
671
726
|
def update_run_button_status():
|
|
672
727
|
text, interactive = self.get_button_status()
|
|
673
728
|
return gr.Button(value=text, interactive=interactive)
|
|
674
729
|
|
|
675
730
|
def update_quick_checkboxes():
|
|
676
|
-
"""
|
|
731
|
+
"""更新快速设置区域控件的状态,确保与设置同步"""
|
|
732
|
+
end_action_val = _get_end_action_value()
|
|
677
733
|
return [
|
|
678
734
|
gr.Checkbox(value=self.current_config.options.purchase.enabled),
|
|
679
735
|
gr.Checkbox(value=self.current_config.options.assignment.enabled),
|
|
@@ -685,6 +741,7 @@ class KotoneBotUI:
|
|
|
685
741
|
gr.Checkbox(value=self.current_config.options.presents.enabled),
|
|
686
742
|
gr.Checkbox(value=self.current_config.options.capsule_toys.enabled),
|
|
687
743
|
gr.Checkbox(value=self.current_config.options.upgrade_support_card.enabled),
|
|
744
|
+
gr.Dropdown(value=end_action_val),
|
|
688
745
|
]
|
|
689
746
|
|
|
690
747
|
gr.Timer(1.0).tick(
|
|
@@ -700,7 +757,7 @@ class KotoneBotUI:
|
|
|
700
757
|
outputs=[
|
|
701
758
|
purchase_quick, assignment_quick, contest_quick, produce_quick,
|
|
702
759
|
mission_reward_quick, club_reward_quick, activity_funds_quick, presents_quick,
|
|
703
|
-
capsule_toys_quick, upgrade_support_card_quick
|
|
760
|
+
capsule_toys_quick, upgrade_support_card_quick, end_action_dropdown
|
|
704
761
|
]
|
|
705
762
|
)
|
|
706
763
|
gr.Timer(1.0).tick(
|
|
@@ -949,12 +1006,6 @@ class KotoneBotUI:
|
|
|
949
1006
|
interactive=True
|
|
950
1007
|
)
|
|
951
1008
|
|
|
952
|
-
keep_screenshots = gr.Checkbox(
|
|
953
|
-
label="保留截图数据",
|
|
954
|
-
value=self.current_config.keep_screenshots,
|
|
955
|
-
info=UserConfig.model_fields['keep_screenshots'].description,
|
|
956
|
-
interactive=True
|
|
957
|
-
)
|
|
958
1009
|
|
|
959
1010
|
target_screenshot_interval = gr.Number(
|
|
960
1011
|
label="最小截图间隔(秒)",
|
|
@@ -1019,14 +1070,12 @@ class KotoneBotUI:
|
|
|
1019
1070
|
# Common settings for all backend types
|
|
1020
1071
|
self.current_config.backend.screenshot_impl = data['screenshot_method']
|
|
1021
1072
|
self.current_config.backend.target_screenshot_interval = data['target_screenshot_interval']
|
|
1022
|
-
self.current_config.keep_screenshots = data['keep_screenshots'] # This is a UserConfig field
|
|
1023
1073
|
|
|
1024
1074
|
return set_config, {
|
|
1025
1075
|
'adb_ip': adb_ip,
|
|
1026
1076
|
'adb_port': adb_port,
|
|
1027
|
-
'screenshot_method': screenshot_impl,
|
|
1077
|
+
'screenshot_method': screenshot_impl,
|
|
1028
1078
|
'target_screenshot_interval': target_screenshot_interval,
|
|
1029
|
-
'keep_screenshots': keep_screenshots,
|
|
1030
1079
|
'check_emulator': check_emulator,
|
|
1031
1080
|
'emulator_path': emulator_path,
|
|
1032
1081
|
'adb_emulator_name': adb_emulator_name,
|
|
@@ -1583,6 +1632,8 @@ class KotoneBotUI:
|
|
|
1583
1632
|
gr.Group(visible=False), # memory_sets_group
|
|
1584
1633
|
gr.Dropdown(visible=False), # memory_sets
|
|
1585
1634
|
gr.Checkbox(visible=False), # auto_set_support
|
|
1635
|
+
gr.Group(visible=False), # support_card_sets_group
|
|
1636
|
+
gr.Dropdown(visible=False), # support_card_sets
|
|
1586
1637
|
gr.Checkbox(visible=False), # use_pt_boost
|
|
1587
1638
|
gr.Checkbox(visible=False), # use_note_boost
|
|
1588
1639
|
gr.Checkbox(visible=False), # follow_producer
|
|
@@ -1642,12 +1693,15 @@ class KotoneBotUI:
|
|
|
1642
1693
|
solution_choices = [(f"{sol.name} - {sol.description or '无描述'}", sol.id) for sol in solutions]
|
|
1643
1694
|
|
|
1644
1695
|
gr.Success("新培育方案创建成功")
|
|
1645
|
-
|
|
1646
|
-
|
|
1696
|
+
|
|
1697
|
+
# 更新培育 Tab 下拉框并保持设置 Tab 当前选中值
|
|
1698
|
+
updated_dropdown_produce = gr.Dropdown(choices=solution_choices, value=new_solution.id)
|
|
1647
1699
|
if settings_dropdown is not None:
|
|
1648
|
-
|
|
1700
|
+
current_selected = self.current_config.options.produce.selected_solution_id
|
|
1701
|
+
updated_dropdown_settings = gr.Dropdown(choices=solution_choices, value=current_selected)
|
|
1702
|
+
return [updated_dropdown_produce, updated_dropdown_settings]
|
|
1649
1703
|
else:
|
|
1650
|
-
return
|
|
1704
|
+
return updated_dropdown_produce
|
|
1651
1705
|
except Exception as e:
|
|
1652
1706
|
gr.Error(f"创建培育方案失败:{str(e)}")
|
|
1653
1707
|
if settings_dropdown is not None:
|
|
@@ -1664,6 +1718,14 @@ class KotoneBotUI:
|
|
|
1664
1718
|
else:
|
|
1665
1719
|
return gr.Dropdown()
|
|
1666
1720
|
|
|
1721
|
+
# 若尝试删除当前正在使用的培育方案,则拒绝并提示
|
|
1722
|
+
if solution_id == self.current_config.options.produce.selected_solution_id:
|
|
1723
|
+
gr.Warning("不可删除选中方案。请先在设置中选择其他方案,保存后再删除此方案。")
|
|
1724
|
+
if settings_dropdown is not None:
|
|
1725
|
+
return [gr.Dropdown(), gr.Dropdown()]
|
|
1726
|
+
else:
|
|
1727
|
+
return gr.Dropdown()
|
|
1728
|
+
|
|
1667
1729
|
try:
|
|
1668
1730
|
solution_manager.delete(solution_id)
|
|
1669
1731
|
|
|
@@ -1672,8 +1734,12 @@ class KotoneBotUI:
|
|
|
1672
1734
|
solution_choices = [(f"{sol.name} - {sol.description or '无描述'}", sol.id) for sol in solutions]
|
|
1673
1735
|
|
|
1674
1736
|
gr.Success("培育方案删除成功")
|
|
1675
|
-
#
|
|
1676
|
-
|
|
1737
|
+
# 删除方案后,保持当前培育方案的选择不变
|
|
1738
|
+
current_selected = self.current_config.options.produce.selected_solution_id
|
|
1739
|
+
if current_selected not in [sol.id for sol in solutions]:
|
|
1740
|
+
current_selected = None # 已不存在
|
|
1741
|
+
|
|
1742
|
+
updated_dropdown = gr.Dropdown(choices=solution_choices, value=current_selected)
|
|
1677
1743
|
if settings_dropdown is not None:
|
|
1678
1744
|
return [updated_dropdown, updated_dropdown]
|
|
1679
1745
|
else:
|
|
@@ -2153,6 +2219,37 @@ class KotoneBotUI:
|
|
|
2153
2219
|
'expose_to_lan': expose_to_lan
|
|
2154
2220
|
}
|
|
2155
2221
|
|
|
2222
|
+
def _create_debug_settings(self) -> ConfigBuilderReturnValue:
|
|
2223
|
+
"""调试设置:仅在调试时使用"""
|
|
2224
|
+
with gr.Column():
|
|
2225
|
+
gr.Markdown("### 调试设置")
|
|
2226
|
+
gr.Markdown('<div style="color: red;">仅供调试使用。正常运行时务必关闭下面所有的选项。</div>')
|
|
2227
|
+
|
|
2228
|
+
keep_screenshots = gr.Checkbox(
|
|
2229
|
+
label="保留截图数据",
|
|
2230
|
+
value=self.current_config.keep_screenshots,
|
|
2231
|
+
info=UserConfig.model_fields['keep_screenshots'].description,
|
|
2232
|
+
interactive=True
|
|
2233
|
+
)
|
|
2234
|
+
|
|
2235
|
+
trace_recommend_card_detection = gr.Checkbox(
|
|
2236
|
+
label="跟踪推荐卡检测",
|
|
2237
|
+
value=self.current_config.options.trace.recommend_card_detection,
|
|
2238
|
+
info=TraceConfig.model_fields['recommend_card_detection'].description,
|
|
2239
|
+
interactive=True
|
|
2240
|
+
)
|
|
2241
|
+
|
|
2242
|
+
def set_config(config: BaseConfig, data: dict[ConfigKey, Any]) -> None:
|
|
2243
|
+
# 保留截图数据属于 UserConfig
|
|
2244
|
+
self.current_config.keep_screenshots = data['keep_screenshots']
|
|
2245
|
+
# 跟踪推荐卡检测属于 BaseConfig.trace
|
|
2246
|
+
config.trace.recommend_card_detection = data['trace_recommend_card_detection']
|
|
2247
|
+
|
|
2248
|
+
return set_config, {
|
|
2249
|
+
'keep_screenshots': keep_screenshots,
|
|
2250
|
+
'trace_recommend_card_detection': trace_recommend_card_detection
|
|
2251
|
+
}
|
|
2252
|
+
|
|
2156
2253
|
def _create_settings_tab(self) -> None:
|
|
2157
2254
|
with gr.Tab("设置"):
|
|
2158
2255
|
gr.Markdown("## 设置")
|
|
@@ -2187,18 +2284,18 @@ class KotoneBotUI:
|
|
|
2187
2284
|
# 升级支援卡设置
|
|
2188
2285
|
capsule_toys_settings = self._create_capsule_toys_settings()
|
|
2189
2286
|
|
|
2190
|
-
# 跟踪设置
|
|
2191
|
-
trace_settings = self._create_trace_settings()
|
|
2192
|
-
|
|
2193
|
-
# 杂项设置
|
|
2194
|
-
misc_settings = self._create_misc_settings()
|
|
2195
|
-
|
|
2196
2287
|
# 启动游戏设置
|
|
2197
2288
|
start_game_settings = self._create_start_game_settings()
|
|
2198
2289
|
|
|
2199
2290
|
# 关闭游戏设置
|
|
2200
2291
|
end_game_settings = self._create_end_game_settings()
|
|
2201
2292
|
|
|
2293
|
+
# 杂项设置
|
|
2294
|
+
misc_settings = self._create_misc_settings()
|
|
2295
|
+
|
|
2296
|
+
# 调试设置(放在最后)
|
|
2297
|
+
debug_settings = self._create_debug_settings()
|
|
2298
|
+
|
|
2202
2299
|
save_btn = gr.Button("保存设置")
|
|
2203
2300
|
result = gr.Markdown()
|
|
2204
2301
|
|
|
@@ -2216,8 +2313,8 @@ class KotoneBotUI:
|
|
|
2216
2313
|
capsule_toys_settings,
|
|
2217
2314
|
start_game_settings,
|
|
2218
2315
|
end_game_settings,
|
|
2219
|
-
|
|
2220
|
-
|
|
2316
|
+
misc_settings,
|
|
2317
|
+
debug_settings
|
|
2221
2318
|
] # list of (set_func, { 'key': component, ... })
|
|
2222
2319
|
all_components = [list(ret[1].values()) for ret in all_return_values] # [[c1, c2], [c3], ...]
|
|
2223
2320
|
all_components = list(chain(*all_components)) # [c1, c2, c3, ...]
|
kotonebot/kaa/main/kaa.py
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import io
|
|
2
2
|
import os
|
|
3
|
+
import sys
|
|
3
4
|
from typing import Any, Literal, cast
|
|
4
5
|
import zipfile
|
|
5
6
|
import logging
|
|
@@ -60,6 +61,8 @@ class Kaa(KotoneBot):
|
|
|
60
61
|
self.upgrade_msg = upgrade_msg
|
|
61
62
|
self.version = importlib.metadata.version('ksaa')
|
|
62
63
|
logger.info('Version: %s', self.version)
|
|
64
|
+
logger.info('Python Version: %s', sys.version)
|
|
65
|
+
logger.info('Python Executable: %s', sys.executable)
|
|
63
66
|
|
|
64
67
|
def add_file_logger(self, log_path: str):
|
|
65
68
|
log_dir = os.path.abspath(os.path.dirname(log_path))
|
kotonebot/kaa/metadata.py
CHANGED
|
@@ -1,6 +1,32 @@
|
|
|
1
1
|
WHATS_NEW = """
|
|
2
2
|
# 更新日志
|
|
3
3
|
## kaa
|
|
4
|
+
### v2025.7.20.0
|
|
5
|
+
脚本:
|
|
6
|
+
* [修复] 修复商店购买中购买推荐商品时点击推荐标签不生效的问题(#b07d4d3)
|
|
7
|
+
* [修复] 修复 DMM 上由于输出分辨率到日志中导致的启动失败问题(#4deea1d)
|
|
8
|
+
* [修复] 修复严格模式下长时间卡在四张卡的推荐卡检测上(#acfb554)
|
|
9
|
+
|
|
10
|
+
界面:
|
|
11
|
+
* [修复] 修复新建培育方案时会自动修改当前选中的方案的问题(#3e67627)
|
|
12
|
+
* [修复] 修复删除培育时的报错问题(#1b385c0)
|
|
13
|
+
* [新增] 将保留截图数据与跟踪推荐卡两个选项统一移动到调试设置中(#f929046)
|
|
14
|
+
* [新增] 首页快速功能区域新增完成后操作(#b8ade2f)
|
|
15
|
+
|
|
16
|
+
### v2025.7.13.0
|
|
17
|
+
脚本:
|
|
18
|
+
* [新增] 上传报告时一并打包配置文件(#a8a5566)
|
|
19
|
+
|
|
20
|
+
界面:
|
|
21
|
+
* [修复] 修复某些情况下热重载配置失败的问题(#4bea422)
|
|
22
|
+
|
|
23
|
+
启动器:
|
|
24
|
+
* [修复] 修复当文件夹路径存在空格时启动器无法正确启动 kaa 的问题(#63f792d)
|
|
25
|
+
* [新增] 启动器 EXE 新增多分辨率图标(#5db3ed6)
|
|
26
|
+
|
|
27
|
+
其他:
|
|
28
|
+
* [其他] 增加对 Python 信息与分辨率信息的日志输出(#5cc9f45)
|
|
29
|
+
|
|
4
30
|
### v2025.7.9.0
|
|
5
31
|
脚本:
|
|
6
32
|
* [新增] 配置中支持储存多个培育方案并支持来回切换(#41e7c8b)
|
|
Binary file
|
kotonebot/kaa/resources/game.db
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|