-
Notifications
You must be signed in to change notification settings - Fork 87
/
config.py
1806 lines (1581 loc) · 70.4 KB
/
config.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
from __future__ import annotations
import json
import logging
import os
import platform
import re
import uuid
from multiprocessing import cpu_count
import toml
from const import appVersion, cached_dir
from dao import DnfHelperChronicleExchangeGiftInfo
from data_struct import ConfigInterface, to_raw_type
from first_run import is_first_run_in_runtime, is_monthly_first_run
from log import color, consoleHandler, consoleLogFormatter, logger
from sign import getACSRFTokenForAMS, getDjcSignParams
from util import (
async_message_box,
get_config_from_env,
is_run_in_github_action,
pause_and_exit,
show_file_content_info,
uin2qq,
)
encoding_error_str = "Found invalid character in key name: '#'. Try quoting the key name. (line 1 column 2 char 1)"
class AccountInfoConfig(ConfigInterface):
default_uin = "o123456789"
default_account = "123456789"
def __init__(self):
# 手动登录需要设置的信息
self.uin = self.default_uin
self.skey = "@a1b2c3d4e"
# 自动登录需要设置的信息
self.account = self.default_account
self.password = "使用账号密码自动登录有风险_请理解这个功能到底如何使用你的账号密码后再决定是否使用"
def has_login(self) -> bool:
return self.uin != self.default_uin
def has_set_account(self) -> bool:
return self.account != self.default_account
class BindRoleConfig(ConfigInterface):
def __init__(self):
# 用于领取奖励的区服ID和角色ID,若不配置,则使用道聚城绑定的dnf角色信息
self.dnf_server_id = "" # 区服id可查阅utils/reference_data/dnf_server_list.js,具体值为每一个服务器配置中的v字段,如{t: "广东三区", v: "22"}表示广东三区的区服ID为"22"
self.dnf_role_id = ""
def has_config(self) -> bool:
return self.dnf_server_id != "" and self.dnf_role_id != ""
class MobileGameRoleInfoConfig(ConfigInterface):
def __init__(self):
# 手游名称: 无/任意手游/剑网3:指尖江湖/和平精英/王者荣耀/QQ飞车手游/天天酷跑/其他任意游戏,可参考djc_biz_list.json获取完整列表
self.game_name = "任意手游"
def enabled(self):
return self.game_name not in ["无", "none"]
def use_any_binded_mobile_game(self):
return self.game_name in ["任意手游"]
class ExchangeItemConfig(ConfigInterface):
"""
@see dnf_exchange_list.json5 fz_exchange_list.json5
"""
def __init__(self):
self.iGoodsId = "753"
self.sGoodsName = "装备品级调整箱(5个)"
self.count = 0
# 以下字段是新版的道具兑换接口所需的额外参数
self.iActionId = ""
self.iType = ""
self.sBizCode = "dnf"
def get_biz_name(self) -> str:
if self.sBizCode == "dnf":
return "地下城与勇士"
elif self.sBizCode == "fz":
return "命运方舟"
else:
return self.sBizCode
def unique_key(self) -> str:
return f"{self.sBizCode}_{self.iGoodsId}"
class DnfHelperChronicleExchangeItemConfig(ConfigInterface):
def __init__(self):
self.sLbcode = "ex_0003"
self.sName = "装备提升礼盒*1"
self.count = 0
# 以下字段由配置工具自动填充,无需配置
self.iCard = "20"
self.iNum = "5"
self.iLevel = "1"
def sync_everything_except_code_and_count(self, gift: DnfHelperChronicleExchangeGiftInfo):
if self.sLbcode != gift.sLbcode:
return
self.sName = gift.sName
self.iCard = gift.iCard
self.iNum = gift.iNum
self.iLevel = gift.iLevel
class FirecrackersExchangeItemConfig(ConfigInterface):
def __init__(self):
self.index = 6
self.name = "灿烂的徽章自选礼盒*1"
self.need_points = 120
self.count = 1
class XinYueOperationConfig(ConfigInterface):
def __init__(self):
self.iFlowId = 512411
self.sFlowName = "输出我的任务积分"
self.count = 1
def unique_key(self) -> str:
return f"{self.iFlowId}"
class XinYueAppOperationConfig(ConfigInterface):
def __init__(self):
# 操作名称
self.name = "兑换复活币"
# 抓包获取的加密http请求体。
# 加密http请求体获取方式:抓包获取http body。如fiddler,抓包,找到对应请求(body列为150或149的请求),右侧点Inspector/HexView,选中Http Body部分的字节码(未标蓝部分),右击Copy/Copy as 0x##,然后粘贴出来,将其中的bytes复制到下列对应数组位置
# 形如 0x58, 0x59, 0x01, 0x00 ...
#
# 如果fiddler无法抓取到请求包,也可以使用小黄鸟HttpCanary来抓包,找到对应请求(response的content-length为150或149的请求),分享请求内容到电脑,然后下载后拖到HxD(另外下载)中查看,从后往前找,从右侧文本区显示为XY..,左侧十六进制区域为58 59 01 00的那个地方开始选择(也就是58 59为起点),一直选择到末尾,然后复制
# 形如 58 59 01 00
# 小黄鸟分享的请求文件,也可以使用vscode的hexdump插件来复制相关内容。打开vscode,安装hexdump插件,然后把下载的请求文件拖到vscode中,ctrl+shift+p呼出命令面板,输入hexdump,即可看到十六进制视图。
# 跟上面的步骤一样,从58 59 01 00(XY..)那个地方一直选择到最后,然后右键选择 Copy the selection in a specific format,选择 C 的格式,然后把复制出来的内容中 { 到 } 之间的0x58, 0x59, 这些复制到下面的数组区域
# 形如 0x58, 0x59, 0x01, 0x00, 0x00, 0x01, 0x5d, 0x0a,
# 0x01, 0x02, 0x97, 0x10, 0x02, 0x3d, 0x00, 0x00,
# 也就是说,下面两种格式都支持
# encrypted_raw_http_body = [0x58, 0x59, 0x01, 0x00]
# encrypted_raw_http_body = "58 59 01 00"
self.encrypted_raw_http_body: list[int] | str = [
0x58,
0x59,
0x01,
0x00,
0x00,
0x01,
0x61,
0x0A,
0x01,
0x01,
0x2B,
0x10,
0x02,
0x3D,
0x00,
0x00,
0x10,
0xE5,
0xF7,
0x11,
0x0E,
0xF8,
0x2F,
0x1B,
0x13,
0x10,
0x6E,
0xA5,
0xF7,
0xE2,
0x7B,
0xD3,
0x58,
0x0B,
0x1D,
0x00,
0x01,
0x01,
0x41,
0x28,
0x52,
0x61,
0x09,
0x86,
0x2C,
0x45,
0x32,
0x20,
0x87,
0xBA,
0xAE,
0xDF,
0x03,
0x34,
0x24,
0x68,
0x75,
0x65,
0x58,
0xDF,
0xC1,
0x61,
0x95,
0x7F,
0xAD,
0x9D,
0xD3,
0x8E,
0x1E,
0x04,
0x5F,
0x68,
0xB2,
0xFA,
0x7A,
0x64,
0x77,
0x99,
0xCA,
0x36,
0x3D,
0xB9,
0x71,
0xF1,
0x80,
0x13,
0xAE,
0xCA,
0xBE,
0xF5,
0x26,
0x99,
0xB6,
0x6F,
0x93,
0xFD,
0xA0,
0x5C,
0x22,
0xF5,
0x11,
0x21,
0xD2,
0x11,
0xE6,
0x0B,
0x39,
0xE2,
0xB8,
0xB0,
0x05,
0x8A,
0xA7,
0x76,
0xD7,
0xF4,
0x22,
0xA4,
0x24,
0x0F,
0xB5,
0xD2,
0x12,
0xAF,
0x09,
0xD8,
0xA0,
0x1C,
0x23,
0x0D,
0x75,
0xF0,
0x68,
0x09,
0x6A,
0x2E,
0xEF,
0x6A,
0x76,
0x49,
0x5A,
0x6B,
0x78,
0xAA,
0xE2,
0x69,
0xE9,
0x31,
0x92,
0xB7,
0x21,
0x7C,
0xD9,
0x6E,
0x8C,
0x1E,
0x0D,
0xE6,
0xE0,
0xC0,
0x10,
0xDF,
0x95,
0x8E,
0x55,
0xFC,
0x64,
0x21,
0x27,
0xA7,
0x87,
0x1E,
0x2B,
0x58,
0xBD,
0x84,
0x4F,
0xE3,
0xC2,
0xC4,
0xB4,
0x23,
0x79,
0x45,
0x57,
0x94,
0xFD,
0x2D,
0xD3,
0xA1,
0x09,
0x04,
0x86,
0xB7,
0xAC,
0xC5,
0x56,
0xB4,
0xEF,
0xA2,
0x3A,
0xF2,
0x41,
0x16,
0x14,
0x02,
0xC4,
0xB2,
0x00,
0x5E,
0xD5,
0x0C,
0x9B,
0x5E,
0x0A,
0xFD,
0x1C,
0x75,
0xEC,
0xB1,
0x50,
0x7A,
0x4E,
0x6C,
0x78,
0xF9,
0xC4,
0x58,
0x7E,
0x73,
0xB6,
0xA8,
0xB0,
0x91,
0xCE,
0x0D,
0xBA,
0xF8,
0xFC,
0x82,
0x81,
0xE6,
0xA8,
0x97,
0x75,
0x5F,
0x8B,
0x5A,
0x4B,
0xEB,
0x59,
0x45,
0x7F,
0x26,
0x57,
0x16,
0x4C,
0x84,
0x6A,
0x50,
0xF8,
0x95,
0x8F,
0x4C,
0x85,
0x2D,
0xA1,
0x88,
0x81,
0xA8,
0xFF,
0x4D,
0x69,
0xEC,
0x6D,
0xC8,
0x05,
0xA0,
0xE0,
0x8F,
0x7D,
0x9C,
0x37,
0xCD,
0xB3,
0x0B,
0x05,
0xFD,
0xF0,
0x52,
0xB2,
0x86,
0x0D,
0x36,
0x27,
0x8B,
0xDF,
0x34,
0x01,
0xA2,
0xC2,
0x01,
0xA8,
0x7F,
0xC9,
0x2F,
0xFA,
0x44,
0x1F,
0xBA,
0x81,
0x73,
0xF6,
0xD0,
0xAC,
0x5D,
0xA4,
0xED,
0x1F,
0xDB,
0x1D,
0xF8,
0x10,
0x97,
0x7E,
0x3F,
0xC3,
0x21,
0x08,
0x8D,
0xB9,
0xCD,
0x82,
0x74,
0x1A,
0xE5,
0x8A,
0x39,
0x67,
0x3C,
0x26,
0x18,
0x53,
0xFC,
0xC4,
0x22,
0xAF,
0x83,
0x2F,
0x06,
0x13,
0xAB,
0xCF,
0x56,
0xF6,
0x42,
0x7D,
0x52,
0xD8,
0x62,
]
def on_config_update(self, raw_config: dict):
if type(self.encrypted_raw_http_body) is str:
# 填的是从hxd复制出来的格式,转换为hex数组
self.encrypted_raw_http_body = self.hxd_hex_str_to_hex_list(str(self.encrypted_raw_http_body))
def hxd_hex_str_to_hex_list(self, hxd_hex_str) -> list[int]:
hex_str_list = hxd_hex_str.split(" ")
hex_with_0x_list = [f"0x{h}" for h in hex_str_list]
return eval("[" + ", ".join(hex_with_0x_list) + "]")
class WegameGuoqingExchangeItemConfig(ConfigInterface):
def __init__(self):
self.iFlowId = "703514"
self.sGoodsName = "强化器-4分"
self.count = 1
class ArkLotteryAwardConfig(ConfigInterface):
def __init__(self):
self.name = "勇士归来礼包"
self.ruleid = 25947
self.count = 1
def update(self, name, ruleid):
self.name = name
self.ruleid = ruleid
return self
class ArkLotteryConfig(ConfigInterface):
def __init__(self):
# 用于完成幸运勇士的区服ID和角色ID,若服务器ID留空,则使用道聚城绑定的dnf角色信息
self.lucky_dnf_server_id = "" # 区服id可查阅utils/reference_data/dnf_server_list.js,具体值为每一个服务器配置中的v字段,如{t: "广东三区", v: "22"}表示广东三区的区服ID为"22"
self.lucky_dnf_role_id = (
"" # 角色ID,不知道时可以填写区服ID,该数值留空,这样处理到抽卡的时候会用黄色字体打印出来信息
)
# 是否领取礼包(建议仅大号开启这个功能)
self.need_take_awards = False
# 是否展示在概览界面
self.show_status = True
# 卡牌数目使用特定的颜色
self.show_color = ""
# 活动ID => 是否消耗所有卡牌来抽奖(建议在兑换完所有礼包后再开启这个功能)
self.act_id_to_cost_all_cards_and_do_lottery: dict[int, bool] = {}
def fields_to_fill(self):
return [
("take_awards", ArkLotteryAwardConfig),
]
def on_config_update(self, raw_config: dict):
self.act_id_to_cost_all_cards_and_do_lottery = {
int(k): bool(v) for k, v in self.act_id_to_cost_all_cards_and_do_lottery.items()
}
class VipMentorConfig(ConfigInterface):
def __init__(self):
# 领取第几个关怀礼包,可填1/2/3,一般是第二个最好
self.take_index = 2
# 用于完成关怀礼包的区服ID和角色ID,若服务器ID留空,则使用道聚城绑定的dnf角色信息
self.guanhuai_dnf_server_id = "" # 区服id可查阅utils/reference_data/dnf_server_list.js,具体值为每一个服务器配置中的v字段,如{t: "广东三区", v: "22"}表示广东三区的区服ID为"22"
self.guanhuai_dnf_role_id = (
"" # 角色ID,不知道时可以填写区服ID,该数值留空,这样处理到抽卡的时候会用黄色字体打印出来信息
)
class DnfHelperInfoConfig(ConfigInterface):
def __init__(self):
# userId/nickName的获取方式为,点开dnf助手中点开右下角的【我的】,然后点击右上角的【编辑】按钮,则社区ID即为userId,昵称即为nickname,如我的这俩值为504051073、风之凌殇
# 社区ID
self.userId = ""
# 昵称
self.nickName = ""
# 登录票据,目前需手动更新。
# 流程:
# 1. 打开dnf助手并确保已登录账户,点击活动,找到【艾丽丝的密室,塔罗牌游戏】并点开,点击右上角分享,选择QQ好友,发送给【我的电脑】。
# 2. 在我的电脑聊天框中的链接中找到请求中的token(形如&serverId=11&token=6C6bNrA4&isMainRole=0&subGameId=10014,因为&是参数分隔符,所以token部分为token=6C6bNrA4,所以token为6C6bNrA4, ps: 如果参数形如&serverId=&token=&isMainRole=&subGameId=,那么token部分参数为token=,说明这个活动助手没有把token放到链接里,需要尝试下一个),将其进行更新到配置文件中【dnf助手信息】配置中
#
# ps: 如果有多个账号需要领取这个,请不要在手机上依次登入登出执行上述步骤来获取token,因为你在登陆下一个账号的时候,之前的账号的token就因为登出而失效了
# 有这个需求的话,请使用安卓模拟器的多开功能来多开dnf助手去登陆各个账号。如果手机支持多开app,也可以使用对应功能。具体多开流程请自行百度搜索: 手机 app 多开
self.token = ""
# 唯一角色ID,与token的获取方式完全一致,只是要找的参数从token变成了uniqueRoleId
# 需要确保助手里配置的编年史领奖角色和道聚城里的一致,否则这个值会对不上
self.uniqueRoleId = ""
# 搭档的昵称(仅本地区分用)
self.pNickName = ""
# 搭档的userId,让你的固定搭档告知你userid即可
self.pUserId = ""
# 是否启用自动匹配编年史搭档功能
# 需要满足以下条件才会实际生效
# 1. 在按月付费期间
# 2. 开启了本开关
# 4. 上个月达到了30级
self.enable_auto_match_dnf_chronicle = False
# dnf助手编年史是否开启抽奖
self.chronicle_lottery = False
# dnf助手编年史兑换道具信息,其他奖励信息可查阅utils/reference_data/dnf助手编年史活动_可兑换奖励列表.json
self.chronicle_exchange_items: list[DnfHelperChronicleExchangeItemConfig] = []
# 不尝试获取编年史新鉴权参数
self.disable_fetch_access_token = False
def fields_to_fill(self):
return [
("chronicle_exchange_items", DnfHelperChronicleExchangeItemConfig),
]
def on_config_update(self, raw_config: dict):
if len(self.token) != 0 and len(self.token) != 8:
async_message_box(
f"{self.nickName} 对应的token({self.token}) 必定是错误的,因为token的长度只可能是8位,而你填的token长度为{len(self.token)}",
"token长度不对",
)
def get_exchange_item_by_sLbcode(self, sLbcode: str) -> DnfHelperChronicleExchangeItemConfig | None:
for exchange_item in self.chronicle_exchange_items:
if exchange_item.sLbcode == sLbcode:
return exchange_item
return None
def move_exchange_item_to_front(self):
self.chronicle_exchange_items.sort(key=lambda item: item.count > 0, reverse=True)
class HelloVoiceInfoConfig(ConfigInterface):
def __init__(self):
# hello语音(皮皮蟹)的用户ID
# 获取方式:打开hello语音(皮皮蟹),点击右下角【我的】tab,在最上方头像框的右侧,昵称下方,有形如【ID:XXXXXX】的字样,其中ID后面这串数字就是用户ID
self.hello_id = ""
class FirecrackersConfig(ConfigInterface):
def __init__(self):
# 是否开启抽奖,建议兑换完所有道具后再开启
self.enable_lottery = False
# 兑换道具信息
self.exchange_items: list[FirecrackersExchangeItemConfig] = []
def fields_to_fill(self):
return [
("exchange_items", FirecrackersExchangeItemConfig),
]
class ComicConfig(ConfigInterface):
def __init__(self):
# 是否开启抽奖,建议兑换完所有道具后再开启
self.enable_lottery = False
# 兑换道具信息
self.exchange_items: list[ComicExchangeItemConfig] = []
def fields_to_fill(self):
return [
("exchange_items", ComicExchangeItemConfig),
]
def get_exchange_item_by_index(self, index: int) -> ComicExchangeItemConfig | None:
for exchange_item in self.exchange_items:
if exchange_item.index == index:
return exchange_item
return None
def move_exchange_item_to_front(self):
self.exchange_items.sort(key=lambda item: item.count > 0, reverse=True)
class ComicExchangeItemConfig(ConfigInterface):
def __init__(self):
self.index = 1
self.name = "黑钻15天"
self.need_star = 20
self.count = 1
class FunctionSwitchesConfig(ConfigInterface):
def __init__(self):
# ------------ 全局禁用开关 ------------
# 是否禁用各种活动,供小号使用,这样新增的各种活动都将被禁用
# 例外情况:道聚城、许愿、心悦特权专区、集卡这四个活动不受该配置项影响
# 如果想要单独设置各个活动的开关,请不要设置这个配置项,否则各个新活动都会被禁用
self.disable_most_activities_v2 = False
# 是否禁用分享功能
self.disable_share = False
# ------------ 登陆类型开关 ------------
# 是否禁用 普通 登录
self.disable_login_mode_normal = False
# 是否禁用 QQ空间 登录
self.disable_login_mode_qzone = False
# 是否禁用 爱玩 登录
self.disable_login_mode_iwan = False
# 是否禁用 安全管家 登录
self.disable_login_mode_guanjia = False
# 是否禁用 心悦 登录
self.disable_login_mode_xinyue = False
# 是否禁用 超享玩 登录
self.disable_login_mode_supercore = False
# 是否禁用 道聚城 登录
self.disable_login_mode_djc = False
# ------------ 普通skey(需要登录 炎炎夏日 活动页面 获取) ------------
# 是否领取道聚城
self.get_djc = True
# 是否启用许愿功能,用于完成《有理想》。目前仅限安卓版本道聚城上绑定王者荣耀时可使用
self.make_wish = True
# 是否领取心悦特权专区
self.get_xinyue = True
# 是否领取腾讯游戏信用相关礼包
self.get_credit_xinyue_gift = True
# 是否领取每月黑钻等级礼包
self.get_heizuan_gift = True
# 是否领取DNF进击吧赛利亚活动
self.get_xinyue_sailiyam = True
# 是否领取wegame国庆活动
self.get_wegame_guoqing = True
# 是否领取史诗之路来袭活动合集活动
self.get_dnf_1224 = True
# 是否领取DNF闪光杯第三期活动
self.get_dnf_shanguang = True
# 是否领取qq视频活动
self.get_qq_video = True
# 是否领取10月女法师三觉活动
self.get_dnf_female_mage_awaken = True
# 是否领取DNF助手排行榜活动,额外需要助手userId和token
self.get_dnf_rank = True
# 是否领取dnf助手编年史活动,额外需要助手userId
self.get_dnf_helper_chronicle = True
# 是否启用hello语音(皮皮蟹)奖励兑换功能,额外需要hello语音(皮皮蟹)的用户ID
self.get_hello_voice = True
# 是否领取2020DNF嘉年华页面主页面签到活动
self.get_dnf_carnival = True
# 是否领取2020DNF嘉年华直播活动
self.get_dnf_carnival_live = True
# 是否DNF共创投票
self.get_dnf_dianzan = True
# 是否领取DNF福利中心兑换
self.get_dnf_welfare = True
# 是否领取心悦app理财礼卡
self.get_xinyue_financing = True
# 是否领取心悦猫咪
self.get_xinyue_cat = True
# 是否领取心悦app周礼包
self.get_xinyue_weekly_gift = True
# 是否领取dnf漂流瓶
self.get_dnf_drift = True
# 是否领取DNF马杰洛的规划
self.get_majieluo = True
# 是否领取dnf助手活动,额外需要助手userId和token
self.get_dnf_helper = True
# 是否领取暖冬好礼活动
self.get_warm_winter = True
# 是否领取qq视频-AME活动
self.get_qq_video_amesvr = True
# 是否进行dnf论坛签到
self.get_dnf_bbs_signin = True
# 是否领取 DNF落地页 活动
self.get_dnf_luodiye = True
# 是否领取 WeGame 活动
self.get_dnf_wegame = True
# 是否领取 WeGame活动_新版 活动
self.get_wegame_new = True
# 是否领取 新春福袋大作战 活动
self.get_spring_fudai = True
# 是否领取 DNF福签大作战 活动
self.get_dnf_fuqian = True
# 是否领取 DNF集合站 活动
self.get_dnf_collection = True
# 是否领取 燃放爆竹 活动
self.get_firecrackers = True
# 是否领取 DNF巴卡尔竞速 活动
self.get_dnf_bakaer = True
# 是否自动进行colg每日签到和积分领取(其他需自行操作~)
self.get_colg_signin = True
# 是否进行 心悦app 相关操作
self.get_xinyue_app = True
# 是否领取 DNF格斗大赛 活动
self.get_dnf_pk = True
# 是否领取 心悦 活动
self.get_dnf_xinyue = True
# 是否领取 DNF强者之路 活动
self.get_dnf_strong = True
# 是否领取 DNF漫画 活动
self.get_dnf_comic = True
# 是否领取 DNF十三周年庆 活动
self.get_dnf_13 = True
# 是否领取 dnf周年拉好友 活动
self.get_dnf_anniversary_friend = True
# 是否领取 新职业预约活动 活动
self.get_dnf_reserve = True
# 是否领取 DNF周年庆登录活动 活动
self.get_dnf_anniversary = True
# 是否领取 KOL 活动
self.get_dnf_kol = True
# 是否领取 冒险的起点 活动
self.get_maoxian_start = True
# 是否领取 勇士的冒险补给 活动
self.get_maoxian = True
# 是否领取 小酱油周礼包和生日礼包 活动
self.get_xiaojiangyou = True
# 是否领取 DNF公会活动 活动
self.get_dnf_gonghui = True
# 公会活动是否进行积分抽奖
self.dnf_gonghui_enable_lottery = False
# 是否领取 命运的抉择挑战赛 活动
self.get_dnf_mingyun_jueze = True
# 是否领取 关怀活动 活动
self.get_dnf_guanhuai = True
# 是否领取 轻松之路 活动
self.get_dnf_relax_road = True
# 是否领取 虎牙 活动
self.get_huya = True
# 是否领取 DNF名人堂 活动
self.get_dnf_vote = True
# 是否领取 DNF预约 活动
self.get_dnf_reservation = True
# 是否领取 DNF记忆 活动
self.get_dnf_memory = True
# 是否领取 DNF娱乐赛 活动
self.get_dnf_game = True
# 是否领取 DNF互动站 活动
self.get_dnf_interactive = True
# 是否领取 魔界人探险记 活动
self.get_mojieren = True
# 是否领取 我的小屋 活动
self.get_dnf_my_home = True
# 是否领取 组队拜年 活动
self.get_team_happy_new_year = True
# 是否领取 翻牌 活动
self.get_dnf_card_flip = True
# 是否领取 DNF冒险家之路 活动
self.get_dnf_maoxian_road = True
# 是否领取 幸运勇士 活动
self.get_dnf_lucky_user = True
# 是否领取 超享玩 活动
self.get_super_core = True
# 是否领取 巴卡尔对战地图 活动
self.get_dnf_bakaer_map = True
# 是否领取 巴卡尔大作战 活动
self.get_dnf_bakaer_fight = True
# 是否领取 colg其他活动 活动
self.get_colg_other_act = True
# 是否领取 和谐补偿活动 活动
self.get_dnf_compensate = True
# 是否领取 绑定手机活动 活动
self.get_dnf_bind_phone = True
# 是否领取 dnf助手活动wpe 活动
self.get_dnf_helper_wpe = True
# 是否领取 神界预热 活动
self.get_dnf_shenjie_yure = True
# 是否领取 拯救赛利亚 活动
self.get_dnf_save_sailiyam = True
# 是否领取 DNF年货铺 活动
self.get_dnf_nianhuopu = True
# 是否领取 DNF神界成长之路 活动
self.get_dnf_shenjie_grow_up = True
# 是否领取 超核勇士wpe 活动
self.get_dnf_chaohe_wpe = True
# 是否领取 9163补偿 活动
self.get_dnf_9163_apologize = True
# 是否领取 DNFxSNK 活动
self.get_dnf_snk = True
# 是否领取 DNF卡妮娜的心愿摇奖机 活动
self.get_dnf_kanina = True
# 是否领取 喂养删除补偿 活动
self.get_weiyang_compensate = True
# 是否领取 回流攻坚队 活动
self.get_dnf_socialize = True
# ------------ QQ空间pskey(需要登录 QQ空间 获取) ------------
# 是否启用 集卡 功能
self.get_ark_lottery = True
# 是否启用 阿拉德勇士征集令 活动
self.get_dnf_warriors_call = True
# 是否启用 会员关怀 活动
self.get_vip_mentor = True
# 是否启用 超级会员 活动
self.get_dnf_super_vip = True
# 是否启用 黄钻 活动
self.get_dnf_yellow_diamond = True
# 是否启用 qq会员杯 活动
self.get_dnf_club_vip = True
# ------------ 安全管家pskey(需要登录 安全管家 获取) ------------
# 是否领取 管家蚊子腿 活动
self.get_guanjia = True
class AccountConfig(ConfigInterface):
login_mode_by_hand = "by_hand"
login_mode_qr_login = "qr_login"
login_mode_auto_login = "auto_login"
def __init__(self):
# 是否启用该账号
self.enable = True
# 是否在github action模式下启用
self.enable_in_github_action = True
# 是否处于安全模式,也就是登录的时候需要滑动验证码或者发送短信
self.in_safe_mode = False
# 在这些环境中禁用(通过 .run_env 文件来备注环境,用来实现在家里和公司等地方运行不同的账号子集)
self.disable_in_run_env_list: list[str] = []
# 账号名称,仅用于区分不同账号
self.name = "默认账号名-1"
# 登录模式
# by_hand: 手动登录,在skey无效的情况下会弹出活动界面,自行登录后将cookie中uin和skey提取到下面的配置处
# qr_login: 二维码登录,每次运行时若本地缓存的.skey文件中存储的skey过期了,则弹出登录页面,扫描二维码后将自动更新skey,进行后续操作
# auto_login: 自动登录,每次运行若本地缓存的.skey文件中存储的skey过期了,根据填写的账密信息,自动登录来获取uin和skey,无需手动操作
self.login_mode = self.login_mode_qr_login
# 是否无法在道聚城绑定dnf,比如被封禁或者是朋友的QQ(主要用于小号,被风控不能注册dnf账号,但是不影响用来当抽卡等活动的工具人)
self.cannot_bind_dnf_v2 = False
# 我的小屋偷水稻的小号qq列表,本qq会尝试去偷这些小号的水稻
self.myhome_steal_xiaohao_qq_list: list[str] = []
# 我的小屋额外关注的奖励列表
self.myhome_extra_wanted_gift_name_list: list[str] = []
# 漂流瓶每日邀请列表,最多可填8个(不会实际发消息)
self.drift_send_qq_list: list[str] = []
# dnf13周年邀请列表,最多可填3个(不会实际发消息)
self.dnf_13_send_qq_list: list[str] = []
# 新春福袋大作战邀请列表(会实际发消息)
self.spring_fudai_receiver_qq_list: list[str] = []
# 燃放爆竹活动是否尝试邀请好友(不会实际发消息)
self.enable_firecrackers_invite_friend = False
# 马杰洛活动是否尝试黑钻送好友(不会实际发消息)
self.enable_majieluo_invite_friend = False
# 马杰洛活动是否尝试用配置的集卡回归角色领取见面礼
self.enable_majieluo_lucky = False
# 不参与奥兹玛竞速活动切换角色的角色名列表(如果某些号确定不打奥兹玛的,可以把名字加到这里,从而跳过尝试这个角色)
# eg. ["卢克奶妈一号", "卢克奶妈二号", "卢克奶妈三号"]
self.ozma_ignored_rolename_list: list[str] = []
# 公会活动-会长角色名称,如果不设置,则尝试符合条件的角色(优先当前角色)
self.gonghui_rolename_huizhang = ""
# 公会活动-会员角色名称,如果不设置,则尝试符合条件的角色(优先当前角色)
self.gonghui_rolename_huiyuan = ""
# dnf论坛cookie
self.dnf_bbs_cookie = ""
# colg cookie
self.colg_cookie = ""
# 虎牙 cookie
self.huya_cookie = ""
# wegame活动的34C角色 服务器id
self.take_award_34c_server_id = ""
# wegame活动的34C角色 id
self.take_award_34c_role_id = ""
# 是否启用自动匹配心悦组队功能
# 需要满足以下条件才会实际生效
# 1. 在按月付费期间
# 2. 开启了本开关
# 3. 当前QQ是特邀会员或者心悦会员
# 4. 前两周心悦战场荣耀镖局完成运镖任务并领取奖励 6 次
self.enable_auto_match_xinyue_team = False
# 腾讯系网页登录通用账号凭据与token
self.account_info = AccountInfoConfig()
# 角色绑定相关配置,若不配置,则默认使用道聚城绑定的角色
self.bind_role = BindRoleConfig()
# 各功能开关
self.function_switches = FunctionSwitchesConfig()
# 完成《礼包达人》任务所需的手游的名称信息
self.mobile_game_role_info = MobileGameRoleInfoConfig()
# 兑换道具信息
self.exchange_items: list[ExchangeItemConfig] = []
# 心悦相关操作信息
self.xinyue_operations_v2: list[XinYueOperationConfig] = []
# 心悦app相关操作
self.xinyue_app_operations: list[XinYueAppOperationConfig] = []
# 抽卡相关配置
self.ark_lottery = ArkLotteryConfig()
# 会员关怀相关配置
self.vip_mentor = VipMentorConfig()