├── .github
└── workflows
│ ├── maven.yml
│ └── release.yml
├── .gitignore
├── .idea
├── .gitignore
├── artifacts
│ └── getjuan_jar.xml
├── compiler.xml
├── encodings.xml
├── getjuan.iml
├── jarRepositories.xml
├── misc.xml
├── modules.xml
├── uiDesigner.xml
└── vcs.xml
├── README.md
├── _miain_.py
├── botpy.log
├── cache
└── validator.bin
├── getjuan.iml
├── logs
├── 2024-09-05.log
└── 2024-09-06.log
├── pom.xml
├── src
└── main
│ ├── java
│ ├── Config
│ │ ├── ServerConfig.java
│ │ └── Setting.java
│ ├── Connect
│ │ ├── DecompressionUtils.java
│ │ ├── Dispose.java
│ │ ├── HttpUtils.java
│ │ ├── RemoveLogin.java
│ │ ├── RequestBodyBuilder.java
│ │ ├── RequestHeadersBuilder.java
│ │ └── SendReq.java
│ ├── META-INF
│ │ └── MANIFEST.MF
│ ├── Main.java
│ └── logic
│ │ ├── BuildUserAll.java
│ │ ├── Json.java
│ │ ├── ModifyData.java
│ │ ├── ReturnCode.java
│ │ └── UserInputUtils.java
│ └── resources
│ └── META-INF
│ └── plugin.yml
└── userall.txt
/.github/workflows/maven.yml:
--------------------------------------------------------------------------------
1 | name: Java CI with Maven
2 |
3 | on:
4 | push:
5 | branches: [ "master" ]
6 | pull_request:
7 | branches: [ "master" ]
8 |
9 | permissions:
10 | contents: write
11 | security-events: write
12 |
13 | jobs:
14 | build:
15 | runs-on: ubuntu-latest
16 |
17 | steps:
18 | - uses: actions/checkout@v4
19 | - name: Set up JDK 17
20 | uses: actions/setup-java@v4
21 | with:
22 | java-version: '17'
23 | distribution: 'temurin'
24 | cache: maven
25 | - name: Build with Maven
26 | run: mvn -B package --file pom.xml
27 |
28 | # Optional: Uploads the full dependency graph to GitHub to improve the quality of Dependabot alerts this repository can receive
29 | - name: Update dependency graph
30 | uses: advanced-security/maven-dependency-submission-action@571e99aab1055c2e71a1e2309b9691de18d6b7d6
31 |
--------------------------------------------------------------------------------
/.github/workflows/release.yml:
--------------------------------------------------------------------------------
1 | name: Build and Release
2 |
3 | on:
4 | push:
5 | tags:
6 | - 'v*.*.*' # 触发条件:推送标签
7 |
8 | jobs:
9 | build:
10 | runs-on: ubuntu-latest
11 |
12 | steps:
13 | - name: Checkout repository
14 | uses: Natsunokonoha/checkout@main
15 |
16 | - name: Set up JDK 17
17 | uses: Natsunokonoha/setup-java@main
18 | with:
19 | java-version: '17'
20 |
21 | - name: Build with Maven
22 | run: mvn clean package
23 |
24 | - name: List files in target directory
25 | run: ls -la target/
26 |
27 | - name: Create GitHub Release
28 | id: create_release
29 | uses: Natsunokonoha/create-release@main
30 | env:
31 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
32 | with:
33 | tag_name: ${{ github.ref }}
34 | release_name: Release ${{ github.ref }}
35 | draft: false
36 | prerelease: false
37 |
38 | - name: Output upload URL
39 | run: echo "Upload URL: ${{ steps.create_release.outputs.upload_url }}"
40 |
41 | - name: Upload JAR to Release
42 | uses: Natsunokonoha/upload-release-asset@main
43 | with:
44 | upload_url: ${{ steps.create_release.outputs.upload_url }}
45 | asset_path: target/your-project.jar
46 | asset_name: getjuan.jar
47 | asset_content_type: application/getjuan
48 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ### IntelliJ IDEA ###
2 | out/
3 | !**/src/main/**/out/
4 | !**/src/test/**/out/
5 |
6 | ### Eclipse ###
7 | .apt_generated
8 | .classpath
9 | .factorypath
10 | .project
11 | .settings
12 | .springBeans
13 | .sts4-cache
14 | bin/
15 | !**/src/main/**/bin/
16 | !**/src/test/**/bin/
17 |
18 | ### NetBeans ###
19 | /nbproject/private/
20 | /nbbuild/
21 | /dist/
22 | /nbdist/
23 | /.nb-gradle/
24 |
25 | ### VS Code ###
26 | .vscode/
27 |
28 | ### Mac OS ###
29 | .DS_Store
30 | # 项目排除路径
31 | /target/
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # 默认忽略的文件
2 | /shelf/
3 | /workspace.xml
4 | # 基于编辑器的 HTTP 客户端请求
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 |
--------------------------------------------------------------------------------
/.idea/artifacts/getjuan_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | $PROJECT_DIR$/out/artifacts/getjuan_jar
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.idea/getjuan.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/jarRepositories.xml:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/uiDesigner.xml:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 舞萌DX工具
2 | ## ⚖本项目遵循MPL2.0
3 | ## 他能干什么?
4 | 最终目的是实现用户对自己账户内容的一些修改包括但不限于发票、修改乐曲数据、b50、获得新乐曲等然后集成到qqbot里面去。
5 |
6 | ## 目前的实现
7 | 🟢发票
8 |
9 | 🟢暴力登出(解小黑屋)
10 | ## 正在实现的功能
11 | 🟡构建完整的userAll
12 |
13 | 🔴无限每日集章
14 |
15 | 🔴获得歌曲
16 |
17 | 🔴一键打段位
18 |
19 | 🔴修改乐曲数据
20 |
21 | 🔴修改物品
22 |
23 | 🔴修改旅行伙伴
24 |
25 | ## 未来实现的功能
26 | 🔴接入QQbotApi
27 |
28 | 🔴接入水鱼查分器
29 |
30 | 🔴创建数据库保存bot相关
31 |
32 | 🔴创建b50
33 |
34 | 🔴使用分布ip减少不可用的情况
35 |
36 |
--------------------------------------------------------------------------------
/_miain_.py:
--------------------------------------------------------------------------------
1 | import botpy
2 |
3 | import botpy
4 | from botpy.types.message import Message
5 |
6 | class MyClient(botpy.Client):
7 | async def on_at_message_create(self, message: Message):
8 | await self.api.post_message(channel_id=message.channel_id, content="content")
9 |
10 | intents = botpy.Intents(public_guild_messages=True)
11 | client = MyClient(intents=intents)
12 | client.run(appid={}, token={})
13 |
--------------------------------------------------------------------------------
/botpy.log:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HoshinoStarry/NaTsuTool/9d2b63325c602126cd0a1c6040a0b077b6df4823/botpy.log
--------------------------------------------------------------------------------
/cache/validator.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HoshinoStarry/NaTsuTool/9d2b63325c602126cd0a1c6040a0b077b6df4823/cache/validator.bin
--------------------------------------------------------------------------------
/getjuan.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/logs/2024-09-05.log:
--------------------------------------------------------------------------------
1 | [qq-pd-group][Normal][09/05-21:48:03:043]=>can't load extension(s) [io.github.kloping.little_web.WebExtension, io.github.kloping.spt.SptRedis]
2 | [qq-pd-group][Info] [09/05-21:48:03:146]=>version 0.6.3-L1 sptool start success
3 | [qq-pd-group][Normal][09/05-21:48:03:147]=>autoStand contextManager in Start0
4 | [qq-pd-group][Normal][09/05-21:48:03:147]=>计时任务结束...
5 | [qq-pd-group][Normal][09/05-21:48:03:147]=>autoStand authV2Base in Start0
6 | [qq-pd-group][Normal][09/05-21:48:03:148]=>autoStand contextManager in WssWorker
7 | [qq-pd-group][Normal][09/05-21:48:03:148]=>autoStand botBase in WssWorker
8 | [qq-pd-group][Normal][09/05-21:48:03:148]=>autoStand logger in WssWorker
9 | [qq-pd-group][Normal][09/05-21:48:03:148]=>autoStand config in WssWorker
10 | [qq-pd-group][Normal][09/05-21:48:03:148]=>autoStand bot in GroupRobotEventRegister
11 | [qq-pd-group][Normal][09/05-21:48:03:148]=>autoStand logger in Bot
12 | [qq-pd-group][Normal][09/05-21:48:03:148]=>autoStand interActionBase in Bot
13 | [qq-pd-group][Normal][09/05-21:48:03:148]=>autoStand guildBase in Bot
14 | [qq-pd-group][Normal][09/05-21:48:03:149]=>autoStand userBase in Bot
15 | [qq-pd-group][Normal][09/05-21:48:03:149]=>autoStand channelBase in Bot
16 | [qq-pd-group][Normal][09/05-21:48:03:149]=>autoStand dmsBase in Bot
17 | [qq-pd-group][Normal][09/05-21:48:03:149]=>autoStand messageBase in Bot
18 | [qq-pd-group][Normal][09/05-21:48:03:149]=>autoStand memberBase in Bot
19 | [qq-pd-group][Normal][09/05-21:48:03:149]=>autoStand groupBaseV2 in Bot
20 | [qq-pd-group][Normal][09/05-21:48:03:149]=>autoStand userBaseV2 in Bot
21 | [qq-pd-group][Normal][09/05-21:48:03:149]=>autoStand authV2Base in Bot
22 | [qq-pd-group][Normal][09/05-21:48:03:150]=>autoStand config in Bot
23 | [qq-pd-group][Normal][09/05-21:48:03:150]=>autoStand logger in HttpClientConfig
24 | [qq-pd-group][Normal][09/05-21:48:03:150]=>autoStand bot in HttpClientConfig
25 | [qq-pd-group][Normal][09/05-21:48:03:150]=>autoStand config in Events
26 | [qq-pd-group][Normal][09/05-21:48:03:150]=>autoStand logger in Events
27 | [qq-pd-group][Normal][09/05-21:48:03:150]=>autoStand bot in Events
28 | [qq-pd-group][Normal][09/05-21:48:03:150]=>autoStand bot in ChannelEventsRegister
29 | [qq-pd-group][Normal][09/05-21:48:03:150]=>autoStand bot in InterActionEventRegister
30 | [qq-pd-group][Normal][09/05-21:48:03:150]=>autoStand logger in InterActionEventRegister
31 | [qq-pd-group][Normal][09/05-21:48:03:150]=>autoStand logger in AuthAndHeartbeat
32 | [qq-pd-group][Normal][09/05-21:48:03:152]=>autoStand contextManager in AuthAndHeartbeat
33 | [qq-pd-group][Normal][09/05-21:48:03:152]=>autoStand wssWorker in AuthAndHeartbeat
34 | [qq-pd-group][Normal][09/05-21:48:03:152]=>autoStand config in AuthAndHeartbeat
35 | [qq-pd-group][Normal][09/05-21:48:03:152]=>autoStand bot in AuthAndHeartbeat
36 | [qq-pd-group][Normal][09/05-21:48:03:152]=>autoStand bot in MemberEventRegisters
37 | [qq-pd-group][Normal][09/05-21:48:03:152]=>autoStand bot in FriendEventsRegister
38 | [qq-pd-group][Normal][09/05-21:48:03:152]=>autoStand bot in MessageDeleteEventRegister
39 | [qq-pd-group][Normal][09/05-21:48:03:152]=>autoStand bot in GuildEventsRegister
40 | [qq-pd-group][Normal][09/05-21:48:03:152]=>autoStand logger in GuildEventsRegister
41 | [qq-pd-group][Normal][09/05-21:48:03:152]=>autoStand bot in GroupEventsRegister
42 | [qq-pd-group][Normal][09/05-21:48:03:152]=>autoStand logger in GroupEventsRegister
43 | [qq-pd-group][Normal][09/05-21:48:03:153]=>autoStand bot in MessageReactionEventRegister
44 | [qq-pd-group][Normal][09/05-21:48:03:153]=>autoStand bot in MessageEventsRegister
45 | [qq-pd-group][Error] [09/05-21:48:03:759]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
46 | [qq-pd-group][Normal][09/05-21:48:03:873]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"90b5a1c5c0dac6f2bf58e9711882d3ee"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
47 | [qq-pd-group][Error] [09/05-21:48:03:874]=>在WebSocketClient启动时失败
48 | [qq-pd-group][Normal][09/05-21:48:10:514]=>can't load extension(s) [io.github.kloping.little_web.WebExtension, io.github.kloping.spt.SptRedis]
49 | [qq-pd-group][Info] [09/05-21:48:10:613]=>version 0.6.3-L1 sptool start success
50 | [qq-pd-group][Normal][09/05-21:48:10:614]=>autoStand contextManager in Start0
51 | [qq-pd-group][Normal][09/05-21:48:10:614]=>计时任务结束...
52 | [qq-pd-group][Normal][09/05-21:48:10:614]=>autoStand authV2Base in Start0
53 | [qq-pd-group][Normal][09/05-21:48:10:614]=>autoStand contextManager in WssWorker
54 | [qq-pd-group][Normal][09/05-21:48:10:614]=>autoStand botBase in WssWorker
55 | [qq-pd-group][Normal][09/05-21:48:10:615]=>autoStand logger in WssWorker
56 | [qq-pd-group][Normal][09/05-21:48:10:615]=>autoStand config in WssWorker
57 | [qq-pd-group][Normal][09/05-21:48:10:615]=>autoStand bot in GroupRobotEventRegister
58 | [qq-pd-group][Normal][09/05-21:48:10:615]=>autoStand logger in Bot
59 | [qq-pd-group][Normal][09/05-21:48:10:615]=>autoStand interActionBase in Bot
60 | [qq-pd-group][Normal][09/05-21:48:10:615]=>autoStand guildBase in Bot
61 | [qq-pd-group][Normal][09/05-21:48:10:615]=>autoStand userBase in Bot
62 | [qq-pd-group][Normal][09/05-21:48:10:616]=>autoStand channelBase in Bot
63 | [qq-pd-group][Normal][09/05-21:48:10:616]=>autoStand dmsBase in Bot
64 | [qq-pd-group][Normal][09/05-21:48:10:616]=>autoStand messageBase in Bot
65 | [qq-pd-group][Normal][09/05-21:48:10:616]=>autoStand memberBase in Bot
66 | [qq-pd-group][Normal][09/05-21:48:10:616]=>autoStand groupBaseV2 in Bot
67 | [qq-pd-group][Normal][09/05-21:48:10:616]=>autoStand userBaseV2 in Bot
68 | [qq-pd-group][Normal][09/05-21:48:10:616]=>autoStand authV2Base in Bot
69 | [qq-pd-group][Normal][09/05-21:48:10:616]=>autoStand config in Bot
70 | [qq-pd-group][Normal][09/05-21:48:10:617]=>autoStand logger in HttpClientConfig
71 | [qq-pd-group][Normal][09/05-21:48:10:617]=>autoStand bot in HttpClientConfig
72 | [qq-pd-group][Normal][09/05-21:48:10:617]=>autoStand config in Events
73 | [qq-pd-group][Normal][09/05-21:48:10:617]=>autoStand logger in Events
74 | [qq-pd-group][Normal][09/05-21:48:10:617]=>autoStand bot in Events
75 | [qq-pd-group][Normal][09/05-21:48:10:617]=>autoStand bot in ChannelEventsRegister
76 | [qq-pd-group][Normal][09/05-21:48:10:617]=>autoStand bot in InterActionEventRegister
77 | [qq-pd-group][Normal][09/05-21:48:10:617]=>autoStand logger in InterActionEventRegister
78 | [qq-pd-group][Normal][09/05-21:48:10:617]=>autoStand logger in AuthAndHeartbeat
79 | [qq-pd-group][Normal][09/05-21:48:10:617]=>autoStand contextManager in AuthAndHeartbeat
80 | [qq-pd-group][Normal][09/05-21:48:10:618]=>autoStand wssWorker in AuthAndHeartbeat
81 | [qq-pd-group][Normal][09/05-21:48:10:618]=>autoStand config in AuthAndHeartbeat
82 | [qq-pd-group][Normal][09/05-21:48:10:618]=>autoStand bot in AuthAndHeartbeat
83 | [qq-pd-group][Normal][09/05-21:48:10:618]=>autoStand bot in MemberEventRegisters
84 | [qq-pd-group][Normal][09/05-21:48:10:618]=>autoStand bot in FriendEventsRegister
85 | [qq-pd-group][Normal][09/05-21:48:10:618]=>autoStand bot in MessageDeleteEventRegister
86 | [qq-pd-group][Normal][09/05-21:48:10:618]=>autoStand bot in GuildEventsRegister
87 | [qq-pd-group][Normal][09/05-21:48:10:618]=>autoStand logger in GuildEventsRegister
88 | [qq-pd-group][Normal][09/05-21:48:10:618]=>autoStand bot in GroupEventsRegister
89 | [qq-pd-group][Normal][09/05-21:48:10:618]=>autoStand logger in GroupEventsRegister
90 | [qq-pd-group][Normal][09/05-21:48:10:619]=>autoStand bot in MessageReactionEventRegister
91 | [qq-pd-group][Normal][09/05-21:48:10:619]=>autoStand bot in MessageEventsRegister
92 | [qq-pd-group][Error] [09/05-21:48:11:104]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
93 | [qq-pd-group][Normal][09/05-21:48:11:203]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"088763bc1e6a9de3cfd647d1f5adfd94"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
94 | [qq-pd-group][Error] [09/05-21:48:11:204]=>在WebSocketClient启动时失败
95 | [qq-pd-group][Error] [09/05-21:48:21:409]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
96 | [qq-pd-group][Normal][09/05-21:48:21:409]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"160b693d6adcc66163903faa9de598f8"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
97 | [qq-pd-group][Error] [09/05-21:48:21:410]=>在WebSocketClient启动时失败
98 | [qq-pd-group][Error] [09/05-21:48:31:593]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
99 | [qq-pd-group][Normal][09/05-21:48:31:594]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"c058f3ad1482224be07590bb808b4bd1"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
100 | [qq-pd-group][Error] [09/05-21:48:31:594]=>在WebSocketClient启动时失败
101 | [qq-pd-group][Normal][09/05-22:23:09:469]=>can't load extension(s) [io.github.kloping.little_web.WebExtension, io.github.kloping.spt.SptRedis]
102 | [qq-pd-group][Info] [09/05-22:23:09:567]=>version 0.6.3-L1 sptool start success
103 | [qq-pd-group][Normal][09/05-22:23:09:568]=>autoStand contextManager in Start0
104 | [qq-pd-group][Normal][09/05-22:23:09:568]=>计时任务结束...
105 | [qq-pd-group][Normal][09/05-22:23:09:569]=>autoStand authV2Base in Start0
106 | [qq-pd-group][Normal][09/05-22:23:09:569]=>autoStand contextManager in WssWorker
107 | [qq-pd-group][Normal][09/05-22:23:09:569]=>autoStand botBase in WssWorker
108 | [qq-pd-group][Normal][09/05-22:23:09:569]=>autoStand logger in WssWorker
109 | [qq-pd-group][Normal][09/05-22:23:09:569]=>autoStand config in WssWorker
110 | [qq-pd-group][Normal][09/05-22:23:09:569]=>autoStand bot in GroupRobotEventRegister
111 | [qq-pd-group][Normal][09/05-22:23:09:570]=>autoStand logger in Bot
112 | [qq-pd-group][Normal][09/05-22:23:09:570]=>autoStand interActionBase in Bot
113 | [qq-pd-group][Normal][09/05-22:23:09:570]=>autoStand guildBase in Bot
114 | [qq-pd-group][Normal][09/05-22:23:09:570]=>autoStand userBase in Bot
115 | [qq-pd-group][Normal][09/05-22:23:09:570]=>autoStand channelBase in Bot
116 | [qq-pd-group][Normal][09/05-22:23:09:570]=>autoStand dmsBase in Bot
117 | [qq-pd-group][Normal][09/05-22:23:09:570]=>autoStand messageBase in Bot
118 | [qq-pd-group][Normal][09/05-22:23:09:570]=>autoStand memberBase in Bot
119 | [qq-pd-group][Normal][09/05-22:23:09:571]=>autoStand groupBaseV2 in Bot
120 | [qq-pd-group][Normal][09/05-22:23:09:571]=>autoStand userBaseV2 in Bot
121 | [qq-pd-group][Normal][09/05-22:23:09:571]=>autoStand authV2Base in Bot
122 | [qq-pd-group][Normal][09/05-22:23:09:571]=>autoStand config in Bot
123 | [qq-pd-group][Normal][09/05-22:23:09:571]=>autoStand logger in HttpClientConfig
124 | [qq-pd-group][Normal][09/05-22:23:09:571]=>autoStand bot in HttpClientConfig
125 | [qq-pd-group][Normal][09/05-22:23:09:571]=>autoStand config in Events
126 | [qq-pd-group][Normal][09/05-22:23:09:571]=>autoStand logger in Events
127 | [qq-pd-group][Normal][09/05-22:23:09:571]=>autoStand bot in Events
128 | [qq-pd-group][Normal][09/05-22:23:09:572]=>autoStand bot in ChannelEventsRegister
129 | [qq-pd-group][Normal][09/05-22:23:09:572]=>autoStand bot in InterActionEventRegister
130 | [qq-pd-group][Normal][09/05-22:23:09:572]=>autoStand logger in InterActionEventRegister
131 | [qq-pd-group][Normal][09/05-22:23:09:572]=>autoStand logger in AuthAndHeartbeat
132 | [qq-pd-group][Normal][09/05-22:23:09:572]=>autoStand contextManager in AuthAndHeartbeat
133 | [qq-pd-group][Normal][09/05-22:23:09:572]=>autoStand wssWorker in AuthAndHeartbeat
134 | [qq-pd-group][Normal][09/05-22:23:09:572]=>autoStand config in AuthAndHeartbeat
135 | [qq-pd-group][Normal][09/05-22:23:09:573]=>autoStand bot in AuthAndHeartbeat
136 | [qq-pd-group][Normal][09/05-22:23:09:573]=>autoStand bot in MemberEventRegisters
137 | [qq-pd-group][Normal][09/05-22:23:09:573]=>autoStand bot in FriendEventsRegister
138 | [qq-pd-group][Normal][09/05-22:23:09:573]=>autoStand bot in MessageDeleteEventRegister
139 | [qq-pd-group][Normal][09/05-22:23:09:573]=>autoStand bot in GuildEventsRegister
140 | [qq-pd-group][Normal][09/05-22:23:09:573]=>autoStand logger in GuildEventsRegister
141 | [qq-pd-group][Normal][09/05-22:23:09:573]=>autoStand bot in GroupEventsRegister
142 | [qq-pd-group][Normal][09/05-22:23:09:573]=>autoStand logger in GroupEventsRegister
143 | [qq-pd-group][Normal][09/05-22:23:09:573]=>autoStand bot in MessageReactionEventRegister
144 | [qq-pd-group][Normal][09/05-22:23:09:574]=>autoStand bot in MessageEventsRegister
145 | [qq-pd-group][Error] [09/05-22:23:10:352]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
146 | [qq-pd-group][Normal][09/05-22:23:10:460]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"69f950d7f76d5f9569b7edc46dbb1c7b"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
147 | [qq-pd-group][Error] [09/05-22:23:10:461]=>在WebSocketClient启动时失败
148 | [qq-pd-group][Error] [09/05-22:23:20:796]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
149 | [qq-pd-group][Normal][09/05-22:23:20:796]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"dba6a4081a4630a525e682ac56c9cc3a"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
150 | [qq-pd-group][Error] [09/05-22:23:20:797]=>在WebSocketClient启动时失败
151 | [qq-pd-group][Error] [09/05-22:23:31:123]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
152 | [qq-pd-group][Normal][09/05-22:23:31:123]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"b247e57aa7c1e84c25bf596575426811"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
153 | [qq-pd-group][Error] [09/05-22:23:31:124]=>在WebSocketClient启动时失败
154 | [qq-pd-group][Error] [09/05-22:23:41:483]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
155 | [qq-pd-group][Normal][09/05-22:23:41:483]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"403644efb5def3ff01a10a10ffdbb108"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
156 | [qq-pd-group][Error] [09/05-22:23:41:484]=>在WebSocketClient启动时失败
157 | [qq-pd-group][Error] [09/05-22:23:51:806]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
158 | [qq-pd-group][Normal][09/05-22:23:51:806]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"9212e96226edaa8dcf1fe864655d74ef"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
159 | [qq-pd-group][Error] [09/05-22:23:51:807]=>在WebSocketClient启动时失败
160 | [qq-pd-group][Error] [09/05-22:24:02:080]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
161 | [qq-pd-group][Normal][09/05-22:24:02:081]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"4e3ed582e6a62f172212d46237b070c8"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
162 | [qq-pd-group][Error] [09/05-22:24:02:081]=>在WebSocketClient启动时失败
163 | [qq-pd-group][Error] [09/05-22:24:12:454]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
164 | [qq-pd-group][Normal][09/05-22:24:12:455]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"5a43d2c76ffcdec0cc2eead52f8d592f"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
165 | [qq-pd-group][Error] [09/05-22:24:12:455]=>在WebSocketClient启动时失败
166 | [qq-pd-group][Error] [09/05-22:24:22:646]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
167 | [qq-pd-group][Normal][09/05-22:24:22:646]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"0734eba2f0d0b7cde21c97e6e1e538d9"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
168 | [qq-pd-group][Error] [09/05-22:24:22:646]=>在WebSocketClient启动时失败
169 | [qq-pd-group][Error] [09/05-22:24:32:889]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
170 | [qq-pd-group][Normal][09/05-22:24:32:889]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"6ca4c3391180af620e382b9a124fa49c"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
171 | [qq-pd-group][Error] [09/05-22:24:32:889]=>在WebSocketClient启动时失败
172 | [qq-pd-group][Error] [09/05-22:24:43:114]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
173 | [qq-pd-group][Normal][09/05-22:24:43:114]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"90ca395b9c89485fbd9929cbe9c38524"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
174 | [qq-pd-group][Error] [09/05-22:24:43:114]=>在WebSocketClient启动时失败
175 | [qq-pd-group][Error] [09/05-22:24:53:319]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
176 | [qq-pd-group][Normal][09/05-22:24:53:322]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"01168389dd56ceaa2ce141f63fc1dc87"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
177 | [qq-pd-group][Error] [09/05-22:24:53:322]=>在WebSocketClient启动时失败
178 | [qq-pd-group][Error] [09/05-22:25:03:558]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
179 | [qq-pd-group][Normal][09/05-22:25:03:558]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"26e98c65b2badf268ac41720f3748dd9"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
180 | [qq-pd-group][Error] [09/05-22:25:03:559]=>在WebSocketClient启动时失败
181 | [qq-pd-group][Error] [09/05-22:25:13:781]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
182 | [qq-pd-group][Normal][09/05-22:25:13:781]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"4cc7918678948aa750721182e9e3fc33"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
183 | [qq-pd-group][Error] [09/05-22:25:13:781]=>在WebSocketClient启动时失败
184 | [qq-pd-group][Error] [09/05-22:25:23:985]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
185 | [qq-pd-group][Normal][09/05-22:25:23:985]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"9f3ff14ad89ee58478c1d7e89be78467"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
186 | [qq-pd-group][Error] [09/05-22:25:23:986]=>在WebSocketClient启动时失败
187 | [qq-pd-group][Error] [09/05-22:25:34:198]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
188 | [qq-pd-group][Normal][09/05-22:25:34:198]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"873176e819432a09eda480d094d2fee9"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
189 | [qq-pd-group][Error] [09/05-22:25:34:198]=>在WebSocketClient启动时失败
190 | [qq-pd-group][Error] [09/05-22:25:44:400]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
191 | [qq-pd-group][Normal][09/05-22:25:44:400]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"d814f4007edd907a994f0ac5712296ee"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
192 | [qq-pd-group][Error] [09/05-22:25:44:400]=>在WebSocketClient启动时失败
193 | [qq-pd-group][Error] [09/05-22:25:54:622]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
194 | [qq-pd-group][Normal][09/05-22:25:54:623]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"801d76008bb166b7c12c7beee8014f95"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
195 | [qq-pd-group][Error] [09/05-22:25:54:623]=>在WebSocketClient启动时失败
196 | [qq-pd-group][Error] [09/05-22:26:04:834]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
197 | [qq-pd-group][Normal][09/05-22:26:04:835]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"477d1f11e5d674a48a55d5f11ddc66e8"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
198 | [qq-pd-group][Error] [09/05-22:26:04:835]=>在WebSocketClient启动时失败
199 | [qq-pd-group][Error] [09/05-22:26:15:059]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
200 | [qq-pd-group][Normal][09/05-22:26:15:060]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"22ca9e51fdcf6416875de61d22b598ec"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
201 | [qq-pd-group][Error] [09/05-22:26:15:060]=>在WebSocketClient启动时失败
202 | [qq-pd-group][Error] [09/05-22:26:25:244]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
203 | [qq-pd-group][Normal][09/05-22:26:25:245]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"b7957a133e7a568f6babe37a65678cc2"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
204 | [qq-pd-group][Error] [09/05-22:26:25:245]=>在WebSocketClient启动时失败
205 | [qq-pd-group][Normal][09/05-22:26:35:475]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (200), and ({"url":"wss://api.sgroup.qq.com/websocket"}) may be converted to (UrlPack{url='wss://api.sgroup.qq.com/websocket'}) type Will be processed and filtered
206 | [qq-pd-group][Normal][09/05-22:26:35:475]=>ws url:wss://api.sgroup.qq.com/websocket
207 | [qq-pd-group][Info] [09/05-22:26:35:723]=>wss opened
208 | [qq-pd-group][Normal][09/05-22:26:35:729]=>receive {"d":{"heartbeat_interval":41250},"op":10}
209 | [qq-pd-group][Info] [09/05-22:26:35:729]=>Authentication
210 | [qq-pd-group][Normal][09/05-22:26:35:744]=>wss send: {"d":{"intents":1007162883,"shard":[0,1],"properties":{},"token":"Bot 102145937.ndTJajFSnzcUYjTKm7KwrPZd7DiD6EnZ"},"op":2}
211 | [qq-pd-group][Normal][09/05-22:26:35:816]=>receive {"op":9,"d":false}
212 | [qq-pd-group][Debug] [09/05-22:26:35:817]=>wss closed with code 4014 disallowed intents
213 | [qq-pd-group][Error] [09/05-22:26:35:817]=>无权限订阅事件
214 | [qq-pd-group][Normal][09/05-22:27:01:919]=>can't load extension(s) [io.github.kloping.little_web.WebExtension, io.github.kloping.spt.SptRedis]
215 | [qq-pd-group][Info] [09/05-22:27:02:016]=>version 0.6.3-L1 sptool start success
216 | [qq-pd-group][Normal][09/05-22:27:02:017]=>autoStand contextManager in Start0
217 | [qq-pd-group][Normal][09/05-22:27:02:017]=>计时任务结束...
218 | [qq-pd-group][Normal][09/05-22:27:02:017]=>autoStand authV2Base in Start0
219 | [qq-pd-group][Normal][09/05-22:27:02:018]=>autoStand contextManager in WssWorker
220 | [qq-pd-group][Normal][09/05-22:27:02:018]=>autoStand botBase in WssWorker
221 | [qq-pd-group][Normal][09/05-22:27:02:018]=>autoStand logger in WssWorker
222 | [qq-pd-group][Normal][09/05-22:27:02:018]=>autoStand config in WssWorker
223 | [qq-pd-group][Normal][09/05-22:27:02:018]=>autoStand bot in GroupRobotEventRegister
224 | [qq-pd-group][Normal][09/05-22:27:02:018]=>autoStand logger in Bot
225 | [qq-pd-group][Normal][09/05-22:27:02:018]=>autoStand interActionBase in Bot
226 | [qq-pd-group][Normal][09/05-22:27:02:018]=>autoStand guildBase in Bot
227 | [qq-pd-group][Normal][09/05-22:27:02:019]=>autoStand userBase in Bot
228 | [qq-pd-group][Normal][09/05-22:27:02:019]=>autoStand channelBase in Bot
229 | [qq-pd-group][Normal][09/05-22:27:02:019]=>autoStand dmsBase in Bot
230 | [qq-pd-group][Normal][09/05-22:27:02:019]=>autoStand messageBase in Bot
231 | [qq-pd-group][Normal][09/05-22:27:02:019]=>autoStand memberBase in Bot
232 | [qq-pd-group][Normal][09/05-22:27:02:019]=>autoStand groupBaseV2 in Bot
233 | [qq-pd-group][Normal][09/05-22:27:02:019]=>autoStand userBaseV2 in Bot
234 | [qq-pd-group][Normal][09/05-22:27:02:019]=>autoStand authV2Base in Bot
235 | [qq-pd-group][Normal][09/05-22:27:02:020]=>autoStand config in Bot
236 | [qq-pd-group][Normal][09/05-22:27:02:020]=>autoStand logger in HttpClientConfig
237 | [qq-pd-group][Normal][09/05-22:27:02:020]=>autoStand bot in HttpClientConfig
238 | [qq-pd-group][Normal][09/05-22:27:02:020]=>autoStand config in Events
239 | [qq-pd-group][Normal][09/05-22:27:02:020]=>autoStand logger in Events
240 | [qq-pd-group][Normal][09/05-22:27:02:020]=>autoStand bot in Events
241 | [qq-pd-group][Normal][09/05-22:27:02:021]=>autoStand bot in ChannelEventsRegister
242 | [qq-pd-group][Normal][09/05-22:27:02:021]=>autoStand bot in InterActionEventRegister
243 | [qq-pd-group][Normal][09/05-22:27:02:021]=>autoStand logger in InterActionEventRegister
244 | [qq-pd-group][Normal][09/05-22:27:02:021]=>autoStand logger in AuthAndHeartbeat
245 | [qq-pd-group][Normal][09/05-22:27:02:021]=>autoStand contextManager in AuthAndHeartbeat
246 | [qq-pd-group][Normal][09/05-22:27:02:021]=>autoStand wssWorker in AuthAndHeartbeat
247 | [qq-pd-group][Normal][09/05-22:27:02:021]=>autoStand config in AuthAndHeartbeat
248 | [qq-pd-group][Normal][09/05-22:27:02:021]=>autoStand bot in AuthAndHeartbeat
249 | [qq-pd-group][Normal][09/05-22:27:02:022]=>autoStand bot in MemberEventRegisters
250 | [qq-pd-group][Normal][09/05-22:27:02:022]=>autoStand bot in FriendEventsRegister
251 | [qq-pd-group][Normal][09/05-22:27:02:022]=>autoStand bot in MessageDeleteEventRegister
252 | [qq-pd-group][Normal][09/05-22:27:02:022]=>autoStand bot in GuildEventsRegister
253 | [qq-pd-group][Normal][09/05-22:27:02:022]=>autoStand logger in GuildEventsRegister
254 | [qq-pd-group][Normal][09/05-22:27:02:022]=>autoStand bot in GroupEventsRegister
255 | [qq-pd-group][Normal][09/05-22:27:02:022]=>autoStand logger in GroupEventsRegister
256 | [qq-pd-group][Normal][09/05-22:27:02:022]=>autoStand bot in MessageReactionEventRegister
257 | [qq-pd-group][Normal][09/05-22:27:02:022]=>autoStand bot in MessageEventsRegister
258 | [qq-pd-group][Normal][09/05-22:27:02:771]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (200), and ({"url":"wss://api.sgroup.qq.com/websocket"}) may be converted to (UrlPack{url='wss://api.sgroup.qq.com/websocket'}) type Will be processed and filtered
259 | [qq-pd-group][Normal][09/05-22:27:02:772]=>ws url:wss://api.sgroup.qq.com/websocket
260 | [qq-pd-group][Info] [09/05-22:27:03:039]=>wss opened
261 | [qq-pd-group][Normal][09/05-22:27:03:045]=>receive {"d":{"heartbeat_interval":41250},"op":10}
262 | [qq-pd-group][Info] [09/05-22:27:03:045]=>Authentication
263 | [qq-pd-group][Normal][09/05-22:27:03:061]=>wss send: {"d":{"intents":1007162883,"shard":[0,1],"properties":{},"token":"Bot 102145937.ndTJajFSnzcUYjTKm7KwrPZd7DiD6EnZ"},"op":2}
264 | [qq-pd-group][Normal][09/05-22:27:03:111]=>receive {"op":9,"d":false}
265 | [qq-pd-group][Debug] [09/05-22:27:03:112]=>wss closed with code 4014 disallowed intents
266 | [qq-pd-group][Error] [09/05-22:27:03:112]=>无权限订阅事件
267 |
--------------------------------------------------------------------------------
/logs/2024-09-06.log:
--------------------------------------------------------------------------------
1 | [qq-pd-group][Normal][09/06-12:59:46:477]=>can't load extension(s) [io.github.kloping.little_web.WebExtension, io.github.kloping.spt.SptRedis]
2 | [qq-pd-group][Info] [09/06-12:59:46:576]=>version 0.6.3-L1 sptool start success
3 | [qq-pd-group][Normal][09/06-12:59:46:577]=>autoStand contextManager in Start0
4 | [qq-pd-group][Normal][09/06-12:59:46:578]=>autoStand authV2Base in Start0
5 | [qq-pd-group][Normal][09/06-12:59:46:578]=>autoStand contextManager in WssWorker
6 | [qq-pd-group][Normal][09/06-12:59:46:578]=>autoStand botBase in WssWorker
7 | [qq-pd-group][Normal][09/06-12:59:46:578]=>autoStand logger in WssWorker
8 | [qq-pd-group][Normal][09/06-12:59:46:579]=>autoStand config in WssWorker
9 | [qq-pd-group][Normal][09/06-12:59:46:577]=>计时任务结束...
10 | [qq-pd-group][Normal][09/06-12:59:46:579]=>autoStand bot in GroupRobotEventRegister
11 | [qq-pd-group][Normal][09/06-12:59:46:579]=>autoStand logger in Bot
12 | [qq-pd-group][Normal][09/06-12:59:46:579]=>autoStand interActionBase in Bot
13 | [qq-pd-group][Normal][09/06-12:59:46:579]=>autoStand guildBase in Bot
14 | [qq-pd-group][Normal][09/06-12:59:46:579]=>autoStand userBase in Bot
15 | [qq-pd-group][Normal][09/06-12:59:46:579]=>autoStand channelBase in Bot
16 | [qq-pd-group][Normal][09/06-12:59:46:579]=>autoStand dmsBase in Bot
17 | [qq-pd-group][Normal][09/06-12:59:46:579]=>autoStand messageBase in Bot
18 | [qq-pd-group][Normal][09/06-12:59:46:579]=>autoStand memberBase in Bot
19 | [qq-pd-group][Normal][09/06-12:59:46:580]=>autoStand groupBaseV2 in Bot
20 | [qq-pd-group][Normal][09/06-12:59:46:580]=>autoStand userBaseV2 in Bot
21 | [qq-pd-group][Normal][09/06-12:59:46:580]=>autoStand authV2Base in Bot
22 | [qq-pd-group][Normal][09/06-12:59:46:580]=>autoStand config in Bot
23 | [qq-pd-group][Normal][09/06-12:59:46:580]=>autoStand logger in HttpClientConfig
24 | [qq-pd-group][Normal][09/06-12:59:46:580]=>autoStand bot in HttpClientConfig
25 | [qq-pd-group][Normal][09/06-12:59:46:580]=>autoStand config in Events
26 | [qq-pd-group][Normal][09/06-12:59:46:580]=>autoStand logger in Events
27 | [qq-pd-group][Normal][09/06-12:59:46:580]=>autoStand bot in Events
28 | [qq-pd-group][Normal][09/06-12:59:46:581]=>autoStand bot in ChannelEventsRegister
29 | [qq-pd-group][Normal][09/06-12:59:46:581]=>autoStand bot in InterActionEventRegister
30 | [qq-pd-group][Normal][09/06-12:59:46:581]=>autoStand logger in InterActionEventRegister
31 | [qq-pd-group][Normal][09/06-12:59:46:581]=>autoStand logger in AuthAndHeartbeat
32 | [qq-pd-group][Normal][09/06-12:59:46:581]=>autoStand contextManager in AuthAndHeartbeat
33 | [qq-pd-group][Normal][09/06-12:59:46:581]=>autoStand wssWorker in AuthAndHeartbeat
34 | [qq-pd-group][Normal][09/06-12:59:46:581]=>autoStand config in AuthAndHeartbeat
35 | [qq-pd-group][Normal][09/06-12:59:46:581]=>autoStand bot in AuthAndHeartbeat
36 | [qq-pd-group][Normal][09/06-12:59:46:581]=>autoStand bot in MemberEventRegisters
37 | [qq-pd-group][Normal][09/06-12:59:46:581]=>autoStand bot in FriendEventsRegister
38 | [qq-pd-group][Normal][09/06-12:59:46:581]=>autoStand bot in MessageDeleteEventRegister
39 | [qq-pd-group][Normal][09/06-12:59:46:582]=>autoStand bot in GuildEventsRegister
40 | [qq-pd-group][Normal][09/06-12:59:46:582]=>autoStand logger in GuildEventsRegister
41 | [qq-pd-group][Normal][09/06-12:59:46:582]=>autoStand bot in GroupEventsRegister
42 | [qq-pd-group][Normal][09/06-12:59:46:582]=>autoStand logger in GroupEventsRegister
43 | [qq-pd-group][Normal][09/06-12:59:46:582]=>autoStand bot in MessageReactionEventRegister
44 | [qq-pd-group][Normal][09/06-12:59:46:582]=>autoStand bot in MessageEventsRegister
45 | [qq-pd-group][Error] [09/06-12:59:47:281]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
46 | [qq-pd-group][Normal][09/06-12:59:47:399]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"f05995bdc99203dc26ef160196444659"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
47 | [qq-pd-group][Error] [09/06-12:59:47:400]=>在WebSocketClient启动时失败
48 | [qq-pd-group][Error] [09/06-12:59:57:591]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
49 | [qq-pd-group][Normal][09/06-12:59:57:591]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"6de748e6e56f4ec5930a786f1c7a2701"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
50 | [qq-pd-group][Error] [09/06-12:59:57:592]=>在WebSocketClient启动时失败
51 | [qq-pd-group][Error] [09/06-13:00:07:780]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
52 | [qq-pd-group][Normal][09/06-13:00:07:780]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"5992e4ce64584bb09748638e5d559076"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
53 | [qq-pd-group][Error] [09/06-13:00:07:781]=>在WebSocketClient启动时失败
54 | [qq-pd-group][Error] [09/06-13:00:18:084]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
55 | [qq-pd-group][Normal][09/06-13:00:18:084]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"1ce493bdcf98de5ae2db0e28925a0e47"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
56 | [qq-pd-group][Error] [09/06-13:00:18:084]=>在WebSocketClient启动时失败
57 | [qq-pd-group][Error] [09/06-13:00:28:267]=>HTTP error fetching URL. Status=401, URL=[https://api.sgroup.qq.com/gateway]
58 | [qq-pd-group][Normal][09/06-13:00:28:268]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (401), and ({"message":"接口访问源IP不在白名单","code":11298,"err_code":40023002,"trace_id":"adce1ff93fc439ec21880b61e3c5b1e9"}) may be converted to (UrlPack{url='null'}) type Will be processed and filtered
59 | [qq-pd-group][Error] [09/06-13:00:28:268]=>在WebSocketClient启动时失败
60 | [qq-pd-group][Normal][09/06-13:02:33:481]=>can't load extension(s) [io.github.kloping.little_web.WebExtension, io.github.kloping.spt.SptRedis]
61 | [qq-pd-group][Info] [09/06-13:02:33:579]=>version 0.6.3-L1 sptool start success
62 | [qq-pd-group][Normal][09/06-13:02:33:580]=>autoStand contextManager in Start0
63 | [qq-pd-group][Normal][09/06-13:02:33:580]=>计时任务结束...
64 | [qq-pd-group][Normal][09/06-13:02:33:580]=>autoStand authV2Base in Start0
65 | [qq-pd-group][Normal][09/06-13:02:33:580]=>autoStand contextManager in WssWorker
66 | [qq-pd-group][Normal][09/06-13:02:33:580]=>autoStand botBase in WssWorker
67 | [qq-pd-group][Normal][09/06-13:02:33:580]=>autoStand logger in WssWorker
68 | [qq-pd-group][Normal][09/06-13:02:33:580]=>autoStand config in WssWorker
69 | [qq-pd-group][Normal][09/06-13:02:33:580]=>autoStand bot in GroupRobotEventRegister
70 | [qq-pd-group][Normal][09/06-13:02:33:580]=>autoStand logger in Bot
71 | [qq-pd-group][Normal][09/06-13:02:33:580]=>autoStand interActionBase in Bot
72 | [qq-pd-group][Normal][09/06-13:02:33:581]=>autoStand guildBase in Bot
73 | [qq-pd-group][Normal][09/06-13:02:33:581]=>autoStand userBase in Bot
74 | [qq-pd-group][Normal][09/06-13:02:33:581]=>autoStand channelBase in Bot
75 | [qq-pd-group][Normal][09/06-13:02:33:581]=>autoStand dmsBase in Bot
76 | [qq-pd-group][Normal][09/06-13:02:33:581]=>autoStand messageBase in Bot
77 | [qq-pd-group][Normal][09/06-13:02:33:581]=>autoStand memberBase in Bot
78 | [qq-pd-group][Normal][09/06-13:02:33:581]=>autoStand groupBaseV2 in Bot
79 | [qq-pd-group][Normal][09/06-13:02:33:581]=>autoStand userBaseV2 in Bot
80 | [qq-pd-group][Normal][09/06-13:02:33:582]=>autoStand authV2Base in Bot
81 | [qq-pd-group][Normal][09/06-13:02:33:582]=>autoStand config in Bot
82 | [qq-pd-group][Normal][09/06-13:02:33:582]=>autoStand logger in HttpClientConfig
83 | [qq-pd-group][Normal][09/06-13:02:33:582]=>autoStand bot in HttpClientConfig
84 | [qq-pd-group][Normal][09/06-13:02:33:582]=>autoStand config in Events
85 | [qq-pd-group][Normal][09/06-13:02:33:582]=>autoStand logger in Events
86 | [qq-pd-group][Normal][09/06-13:02:33:582]=>autoStand bot in Events
87 | [qq-pd-group][Normal][09/06-13:02:33:582]=>autoStand bot in ChannelEventsRegister
88 | [qq-pd-group][Normal][09/06-13:02:33:582]=>autoStand bot in InterActionEventRegister
89 | [qq-pd-group][Normal][09/06-13:02:33:582]=>autoStand logger in InterActionEventRegister
90 | [qq-pd-group][Normal][09/06-13:02:33:584]=>autoStand logger in AuthAndHeartbeat
91 | [qq-pd-group][Normal][09/06-13:02:33:584]=>autoStand contextManager in AuthAndHeartbeat
92 | [qq-pd-group][Normal][09/06-13:02:33:584]=>autoStand wssWorker in AuthAndHeartbeat
93 | [qq-pd-group][Normal][09/06-13:02:33:584]=>autoStand config in AuthAndHeartbeat
94 | [qq-pd-group][Normal][09/06-13:02:33:584]=>autoStand bot in AuthAndHeartbeat
95 | [qq-pd-group][Normal][09/06-13:02:33:584]=>autoStand bot in MemberEventRegisters
96 | [qq-pd-group][Normal][09/06-13:02:33:584]=>autoStand bot in FriendEventsRegister
97 | [qq-pd-group][Normal][09/06-13:02:33:584]=>autoStand bot in MessageDeleteEventRegister
98 | [qq-pd-group][Normal][09/06-13:02:33:584]=>autoStand bot in GuildEventsRegister
99 | [qq-pd-group][Normal][09/06-13:02:33:584]=>autoStand logger in GuildEventsRegister
100 | [qq-pd-group][Normal][09/06-13:02:33:584]=>autoStand bot in GroupEventsRegister
101 | [qq-pd-group][Normal][09/06-13:02:33:585]=>autoStand logger in GroupEventsRegister
102 | [qq-pd-group][Normal][09/06-13:02:33:585]=>autoStand bot in MessageReactionEventRegister
103 | [qq-pd-group][Normal][09/06-13:02:33:585]=>autoStand bot in MessageEventsRegister
104 | [qq-pd-group][Normal][09/06-13:02:34:268]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (200), and ({"url":"wss://api.sgroup.qq.com/websocket"}) may be converted to (UrlPack{url='wss://api.sgroup.qq.com/websocket'}) type Will be processed and filtered
105 | [qq-pd-group][Normal][09/06-13:02:34:269]=>ws url:wss://api.sgroup.qq.com/websocket
106 | [qq-pd-group][Info] [09/06-13:02:34:547]=>wss opened
107 | [qq-pd-group][Normal][09/06-13:02:34:552]=>receive {"d":{"heartbeat_interval":41250},"op":10}
108 | [qq-pd-group][Info] [09/06-13:02:34:552]=>Authentication
109 | [qq-pd-group][Normal][09/06-13:02:34:569]=>wss send: {"d":{"intents":1007162883,"shard":[0,1],"properties":{},"token":"Bot 102145937.ndTJajFSnzcUYjTKm7KwrPZd7DiD6EnZ"},"op":2}
110 | [qq-pd-group][Normal][09/06-13:02:34:648]=>receive {"op":9,"d":false}
111 | [qq-pd-group][Debug] [09/06-13:02:34:648]=>wss closed with code 4014 disallowed intents
112 | [qq-pd-group][Error] [09/06-13:02:34:649]=>无权限订阅事件
113 | [qq-pd-group][Normal][09/06-13:07:58:466]=>can't load extension(s) [io.github.kloping.little_web.WebExtension, io.github.kloping.spt.SptRedis]
114 | [qq-pd-group][Info] [09/06-13:07:58:569]=>version 0.6.3-L1 sptool start success
115 | [qq-pd-group][Normal][09/06-13:07:58:570]=>autoStand contextManager in Start0
116 | [qq-pd-group][Normal][09/06-13:07:58:570]=>计时任务结束...
117 | [qq-pd-group][Normal][09/06-13:07:58:570]=>autoStand authV2Base in Start0
118 | [qq-pd-group][Normal][09/06-13:07:58:570]=>autoStand contextManager in WssWorker
119 | [qq-pd-group][Normal][09/06-13:07:58:570]=>autoStand botBase in WssWorker
120 | [qq-pd-group][Normal][09/06-13:07:58:570]=>autoStand logger in WssWorker
121 | [qq-pd-group][Normal][09/06-13:07:58:570]=>autoStand config in WssWorker
122 | [qq-pd-group][Normal][09/06-13:07:58:571]=>autoStand bot in GroupRobotEventRegister
123 | [qq-pd-group][Normal][09/06-13:07:58:571]=>autoStand logger in Bot
124 | [qq-pd-group][Normal][09/06-13:07:58:571]=>autoStand interActionBase in Bot
125 | [qq-pd-group][Normal][09/06-13:07:58:571]=>autoStand guildBase in Bot
126 | [qq-pd-group][Normal][09/06-13:07:58:571]=>autoStand userBase in Bot
127 | [qq-pd-group][Normal][09/06-13:07:58:571]=>autoStand channelBase in Bot
128 | [qq-pd-group][Normal][09/06-13:07:58:571]=>autoStand dmsBase in Bot
129 | [qq-pd-group][Normal][09/06-13:07:58:572]=>autoStand messageBase in Bot
130 | [qq-pd-group][Normal][09/06-13:07:58:572]=>autoStand memberBase in Bot
131 | [qq-pd-group][Normal][09/06-13:07:58:572]=>autoStand groupBaseV2 in Bot
132 | [qq-pd-group][Normal][09/06-13:07:58:572]=>autoStand userBaseV2 in Bot
133 | [qq-pd-group][Normal][09/06-13:07:58:572]=>autoStand authV2Base in Bot
134 | [qq-pd-group][Normal][09/06-13:07:58:572]=>autoStand config in Bot
135 | [qq-pd-group][Normal][09/06-13:07:58:572]=>autoStand logger in HttpClientConfig
136 | [qq-pd-group][Normal][09/06-13:07:58:572]=>autoStand bot in HttpClientConfig
137 | [qq-pd-group][Normal][09/06-13:07:58:572]=>autoStand config in Events
138 | [qq-pd-group][Normal][09/06-13:07:58:573]=>autoStand logger in Events
139 | [qq-pd-group][Normal][09/06-13:07:58:573]=>autoStand bot in Events
140 | [qq-pd-group][Normal][09/06-13:07:58:573]=>autoStand bot in ChannelEventsRegister
141 | [qq-pd-group][Normal][09/06-13:07:58:573]=>autoStand bot in InterActionEventRegister
142 | [qq-pd-group][Normal][09/06-13:07:58:573]=>autoStand logger in InterActionEventRegister
143 | [qq-pd-group][Normal][09/06-13:07:58:573]=>autoStand logger in AuthAndHeartbeat
144 | [qq-pd-group][Normal][09/06-13:07:58:573]=>autoStand contextManager in AuthAndHeartbeat
145 | [qq-pd-group][Normal][09/06-13:07:58:573]=>autoStand wssWorker in AuthAndHeartbeat
146 | [qq-pd-group][Normal][09/06-13:07:58:573]=>autoStand config in AuthAndHeartbeat
147 | [qq-pd-group][Normal][09/06-13:07:58:573]=>autoStand bot in AuthAndHeartbeat
148 | [qq-pd-group][Normal][09/06-13:07:58:574]=>autoStand bot in MemberEventRegisters
149 | [qq-pd-group][Normal][09/06-13:07:58:574]=>autoStand bot in FriendEventsRegister
150 | [qq-pd-group][Normal][09/06-13:07:58:574]=>autoStand bot in MessageDeleteEventRegister
151 | [qq-pd-group][Normal][09/06-13:07:58:574]=>autoStand bot in GuildEventsRegister
152 | [qq-pd-group][Normal][09/06-13:07:58:574]=>autoStand logger in GuildEventsRegister
153 | [qq-pd-group][Normal][09/06-13:07:58:574]=>autoStand bot in GroupEventsRegister
154 | [qq-pd-group][Normal][09/06-13:07:58:574]=>autoStand logger in GroupEventsRegister
155 | [qq-pd-group][Normal][09/06-13:07:58:574]=>autoStand bot in MessageReactionEventRegister
156 | [qq-pd-group][Normal][09/06-13:07:58:574]=>autoStand bot in MessageEventsRegister
157 | [qq-pd-group][Normal][09/06-13:07:59:234]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://sandbox.api.sgroup.qq.com/gateway) URL is (200), and ({"url":"wss://sandbox.api.sgroup.qq.com/websocket"}) may be converted to (UrlPack{url='wss://sandbox.api.sgroup.qq.com/websocket'}) type Will be processed and filtered
158 | [qq-pd-group][Normal][09/06-13:07:59:235]=>ws url:wss://sandbox.api.sgroup.qq.com/websocket
159 | [qq-pd-group][Info] [09/06-13:07:59:449]=>wss opened
160 | [qq-pd-group][Normal][09/06-13:07:59:455]=>receive {"d":{"heartbeat_interval":41250},"op":10}
161 | [qq-pd-group][Info] [09/06-13:07:59:455]=>Authentication
162 | [qq-pd-group][Normal][09/06-13:07:59:471]=>wss send: {"d":{"intents":1007162883,"shard":[0,1],"properties":{},"token":"Bot 102145937.ndTJajFSnzcUYjTKm7KwrPZd7DiD6EnZ"},"op":2}
163 | [qq-pd-group][Normal][09/06-13:07:59:561]=>receive {"op":9,"d":false}
164 | [qq-pd-group][Debug] [09/06-13:07:59:562]=>wss closed with code 4014 disallowed intents
165 | [qq-pd-group][Error] [09/06-13:07:59:562]=>无权限订阅事件
166 | [qq-pd-group][Normal][09/06-13:08:43:731]=>can't load extension(s) [io.github.kloping.little_web.WebExtension, io.github.kloping.spt.SptRedis]
167 | [qq-pd-group][Info] [09/06-13:08:43:829]=>version 0.6.3-L1 sptool start success
168 | [qq-pd-group][Normal][09/06-13:08:43:830]=>autoStand contextManager in Start0
169 | [qq-pd-group][Normal][09/06-13:08:43:830]=>计时任务结束...
170 | [qq-pd-group][Normal][09/06-13:08:43:831]=>autoStand authV2Base in Start0
171 | [qq-pd-group][Normal][09/06-13:08:43:831]=>autoStand contextManager in WssWorker
172 | [qq-pd-group][Normal][09/06-13:08:43:831]=>autoStand botBase in WssWorker
173 | [qq-pd-group][Normal][09/06-13:08:43:831]=>autoStand logger in WssWorker
174 | [qq-pd-group][Normal][09/06-13:08:43:831]=>autoStand config in WssWorker
175 | [qq-pd-group][Normal][09/06-13:08:43:831]=>autoStand bot in GroupRobotEventRegister
176 | [qq-pd-group][Normal][09/06-13:08:43:832]=>autoStand logger in Bot
177 | [qq-pd-group][Normal][09/06-13:08:43:832]=>autoStand interActionBase in Bot
178 | [qq-pd-group][Normal][09/06-13:08:43:832]=>autoStand guildBase in Bot
179 | [qq-pd-group][Normal][09/06-13:08:43:832]=>autoStand userBase in Bot
180 | [qq-pd-group][Normal][09/06-13:08:43:832]=>autoStand channelBase in Bot
181 | [qq-pd-group][Normal][09/06-13:08:43:832]=>autoStand dmsBase in Bot
182 | [qq-pd-group][Normal][09/06-13:08:43:832]=>autoStand messageBase in Bot
183 | [qq-pd-group][Normal][09/06-13:08:43:832]=>autoStand memberBase in Bot
184 | [qq-pd-group][Normal][09/06-13:08:43:832]=>autoStand groupBaseV2 in Bot
185 | [qq-pd-group][Normal][09/06-13:08:43:832]=>autoStand userBaseV2 in Bot
186 | [qq-pd-group][Normal][09/06-13:08:43:832]=>autoStand authV2Base in Bot
187 | [qq-pd-group][Normal][09/06-13:08:43:833]=>autoStand config in Bot
188 | [qq-pd-group][Normal][09/06-13:08:43:833]=>autoStand logger in HttpClientConfig
189 | [qq-pd-group][Normal][09/06-13:08:43:833]=>autoStand bot in HttpClientConfig
190 | [qq-pd-group][Normal][09/06-13:08:43:833]=>autoStand config in Events
191 | [qq-pd-group][Normal][09/06-13:08:43:833]=>autoStand logger in Events
192 | [qq-pd-group][Normal][09/06-13:08:43:833]=>autoStand bot in Events
193 | [qq-pd-group][Normal][09/06-13:08:43:833]=>autoStand bot in ChannelEventsRegister
194 | [qq-pd-group][Normal][09/06-13:08:43:833]=>autoStand bot in InterActionEventRegister
195 | [qq-pd-group][Normal][09/06-13:08:43:833]=>autoStand logger in InterActionEventRegister
196 | [qq-pd-group][Normal][09/06-13:08:43:833]=>autoStand logger in AuthAndHeartbeat
197 | [qq-pd-group][Normal][09/06-13:08:43:834]=>autoStand contextManager in AuthAndHeartbeat
198 | [qq-pd-group][Normal][09/06-13:08:43:834]=>autoStand wssWorker in AuthAndHeartbeat
199 | [qq-pd-group][Normal][09/06-13:08:43:834]=>autoStand config in AuthAndHeartbeat
200 | [qq-pd-group][Normal][09/06-13:08:43:834]=>autoStand bot in AuthAndHeartbeat
201 | [qq-pd-group][Normal][09/06-13:08:43:834]=>autoStand bot in MemberEventRegisters
202 | [qq-pd-group][Normal][09/06-13:08:43:834]=>autoStand bot in FriendEventsRegister
203 | [qq-pd-group][Normal][09/06-13:08:43:834]=>autoStand bot in MessageDeleteEventRegister
204 | [qq-pd-group][Normal][09/06-13:08:43:834]=>autoStand bot in GuildEventsRegister
205 | [qq-pd-group][Normal][09/06-13:08:43:834]=>autoStand logger in GuildEventsRegister
206 | [qq-pd-group][Normal][09/06-13:08:43:834]=>autoStand bot in GroupEventsRegister
207 | [qq-pd-group][Normal][09/06-13:08:43:834]=>autoStand logger in GroupEventsRegister
208 | [qq-pd-group][Normal][09/06-13:08:43:834]=>autoStand bot in MessageReactionEventRegister
209 | [qq-pd-group][Normal][09/06-13:08:43:834]=>autoStand bot in MessageEventsRegister
210 | [qq-pd-group][Normal][09/06-13:08:44:399]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://sandbox.api.sgroup.qq.com/gateway) URL is (200), and ({"url":"wss://sandbox.api.sgroup.qq.com/websocket"}) may be converted to (UrlPack{url='wss://sandbox.api.sgroup.qq.com/websocket'}) type Will be processed and filtered
211 | [qq-pd-group][Normal][09/06-13:08:44:400]=>ws url:wss://sandbox.api.sgroup.qq.com/websocket
212 | [qq-pd-group][Info] [09/06-13:08:44:622]=>wss opened
213 | [qq-pd-group][Normal][09/06-13:08:44:628]=>receive {"d":{"heartbeat_interval":41250},"op":10}
214 | [qq-pd-group][Info] [09/06-13:08:44:628]=>Authentication
215 | [qq-pd-group][Normal][09/06-13:08:44:643]=>wss send: {"d":{"intents":1007162883,"shard":[0,1],"properties":{},"token":"Bot 102145937.ndTJajFSnzcUYjTKm7KwrPZd7DiD6EnZ"},"op":2}
216 | [qq-pd-group][Normal][09/06-13:08:44:720]=>receive {"op":9,"d":false}
217 | [qq-pd-group][Debug] [09/06-13:08:44:721]=>wss closed with code 4014 disallowed intents
218 | [qq-pd-group][Error] [09/06-13:08:44:721]=>无权限订阅事件
219 | [qq-pd-group][Normal][09/06-13:10:07:626]=>can't load extension(s) [io.github.kloping.little_web.WebExtension, io.github.kloping.spt.SptRedis]
220 | [qq-pd-group][Info] [09/06-13:10:07:723]=>version 0.6.3-L1 sptool start success
221 | [qq-pd-group][Normal][09/06-13:10:07:724]=>autoStand contextManager in Start0
222 | [qq-pd-group][Normal][09/06-13:10:07:724]=>计时任务结束...
223 | [qq-pd-group][Normal][09/06-13:10:07:724]=>autoStand authV2Base in Start0
224 | [qq-pd-group][Normal][09/06-13:10:07:724]=>autoStand contextManager in WssWorker
225 | [qq-pd-group][Normal][09/06-13:10:07:724]=>autoStand botBase in WssWorker
226 | [qq-pd-group][Normal][09/06-13:10:07:724]=>autoStand logger in WssWorker
227 | [qq-pd-group][Normal][09/06-13:10:07:725]=>autoStand config in WssWorker
228 | [qq-pd-group][Normal][09/06-13:10:07:725]=>autoStand bot in GroupRobotEventRegister
229 | [qq-pd-group][Normal][09/06-13:10:07:725]=>autoStand logger in Bot
230 | [qq-pd-group][Normal][09/06-13:10:07:725]=>autoStand interActionBase in Bot
231 | [qq-pd-group][Normal][09/06-13:10:07:725]=>autoStand guildBase in Bot
232 | [qq-pd-group][Normal][09/06-13:10:07:725]=>autoStand userBase in Bot
233 | [qq-pd-group][Normal][09/06-13:10:07:725]=>autoStand channelBase in Bot
234 | [qq-pd-group][Normal][09/06-13:10:07:726]=>autoStand dmsBase in Bot
235 | [qq-pd-group][Normal][09/06-13:10:07:726]=>autoStand messageBase in Bot
236 | [qq-pd-group][Normal][09/06-13:10:07:726]=>autoStand memberBase in Bot
237 | [qq-pd-group][Normal][09/06-13:10:07:726]=>autoStand groupBaseV2 in Bot
238 | [qq-pd-group][Normal][09/06-13:10:07:726]=>autoStand userBaseV2 in Bot
239 | [qq-pd-group][Normal][09/06-13:10:07:726]=>autoStand authV2Base in Bot
240 | [qq-pd-group][Normal][09/06-13:10:07:726]=>autoStand config in Bot
241 | [qq-pd-group][Normal][09/06-13:10:07:727]=>autoStand logger in HttpClientConfig
242 | [qq-pd-group][Normal][09/06-13:10:07:727]=>autoStand bot in HttpClientConfig
243 | [qq-pd-group][Normal][09/06-13:10:07:727]=>autoStand config in Events
244 | [qq-pd-group][Normal][09/06-13:10:07:727]=>autoStand logger in Events
245 | [qq-pd-group][Normal][09/06-13:10:07:727]=>autoStand bot in Events
246 | [qq-pd-group][Normal][09/06-13:10:07:727]=>autoStand bot in ChannelEventsRegister
247 | [qq-pd-group][Normal][09/06-13:10:07:727]=>autoStand bot in InterActionEventRegister
248 | [qq-pd-group][Normal][09/06-13:10:07:727]=>autoStand logger in InterActionEventRegister
249 | [qq-pd-group][Normal][09/06-13:10:07:727]=>autoStand logger in AuthAndHeartbeat
250 | [qq-pd-group][Normal][09/06-13:10:07:728]=>autoStand contextManager in AuthAndHeartbeat
251 | [qq-pd-group][Normal][09/06-13:10:07:728]=>autoStand wssWorker in AuthAndHeartbeat
252 | [qq-pd-group][Normal][09/06-13:10:07:728]=>autoStand config in AuthAndHeartbeat
253 | [qq-pd-group][Normal][09/06-13:10:07:728]=>autoStand bot in AuthAndHeartbeat
254 | [qq-pd-group][Normal][09/06-13:10:07:728]=>autoStand bot in MemberEventRegisters
255 | [qq-pd-group][Normal][09/06-13:10:07:728]=>autoStand bot in FriendEventsRegister
256 | [qq-pd-group][Normal][09/06-13:10:07:728]=>autoStand bot in MessageDeleteEventRegister
257 | [qq-pd-group][Normal][09/06-13:10:07:728]=>autoStand bot in GuildEventsRegister
258 | [qq-pd-group][Normal][09/06-13:10:07:728]=>autoStand logger in GuildEventsRegister
259 | [qq-pd-group][Normal][09/06-13:10:07:729]=>autoStand bot in GroupEventsRegister
260 | [qq-pd-group][Normal][09/06-13:10:07:729]=>autoStand logger in GroupEventsRegister
261 | [qq-pd-group][Normal][09/06-13:10:07:729]=>autoStand bot in MessageReactionEventRegister
262 | [qq-pd-group][Normal][09/06-13:10:07:729]=>autoStand bot in MessageEventsRegister
263 | [qq-pd-group][Normal][09/06-13:10:08:478]=>Use the (GET) method through the (BotBase) interface to request the data obtained by the response code of the (https://api.sgroup.qq.com/gateway) URL is (200), and ({"url":"wss://api.sgroup.qq.com/websocket"}) may be converted to (UrlPack{url='wss://api.sgroup.qq.com/websocket'}) type Will be processed and filtered
264 | [qq-pd-group][Normal][09/06-13:10:08:479]=>ws url:wss://api.sgroup.qq.com/websocket
265 | [qq-pd-group][Info] [09/06-13:10:08:729]=>wss opened
266 | [qq-pd-group][Normal][09/06-13:10:08:735]=>receive {"d":{"heartbeat_interval":41250},"op":10}
267 | [qq-pd-group][Info] [09/06-13:10:08:735]=>Authentication
268 | [qq-pd-group][Normal][09/06-13:10:08:750]=>wss send: {"d":{"intents":1007162883,"shard":[0,1],"properties":{},"token":"Bot 102145937.ndTJajFSnzcUYjTKm7KwrPZd7DiD6EnZ"},"op":2}
269 | [qq-pd-group][Normal][09/06-13:10:08:810]=>receive {"op":9,"d":false}
270 | [qq-pd-group][Debug] [09/06-13:10:08:811]=>wss closed with code 4014 disallowed intents
271 | [qq-pd-group][Error] [09/06-13:10:08:811]=>无权限订阅事件
272 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 4.0.0
6 |
7 | groupId
8 | getjuan
9 | 1.0-SNAPSHOT
10 |
11 |
12 | 17
13 | 17
14 | UTF-8
15 |
16 |
17 |
18 |
19 |
20 | org.json
21 | json
22 | 20231013
23 |
24 |
25 |
26 | net.mamoe
27 | mirai-core
28 | 2.16.0
29 |
30 |
31 |
32 | com.fasterxml.jackson.core
33 | jackson-databind
34 | 2.15.0
35 |
36 |
37 |
38 |
39 |
40 |
41 | org.apache.maven.plugins
42 | maven-compiler-plugin
43 | 3.8.1
44 |
45 | 10
46 | 10
47 |
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/src/main/java/Config/ServerConfig.java:
--------------------------------------------------------------------------------
1 | package Config;
2 |
3 | public class ServerConfig {
4 | private final String host;
5 | private final int port;
6 | private final String path;
7 |
8 | public ServerConfig(String host, int port, String path) {
9 | this.host = host;
10 | this.port = port;
11 | this.path = path;
12 | }
13 |
14 | public String getHost() {
15 | return host;
16 | }
17 |
18 | public int getPort() {
19 | return port;
20 | }
21 |
22 | public String getPath() {
23 | return path;
24 | }
25 |
26 | public static ServerConfig getDefaultConfigForLogin(String apiUrl) {
27 | // Ensure you have imported or properly referenced the Config.Setting.Config.ServerConfig class
28 | String host = Setting.ServerConfig.Host();
29 | int port = Setting.ServerConfig.Port();
30 | String basePath = Setting.ServerConfig.Path();
31 | String fullPath = basePath.endsWith("/") ? basePath + apiUrl : basePath + "/" + apiUrl;
32 | return new ServerConfig(host, port, fullPath);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/Config/Setting.java:
--------------------------------------------------------------------------------
1 | package Config;
2 |
3 | public class Setting {
4 |
5 | public static class Api {
6 | // 内部静态类 Login
7 | public static String Login() { return "UserLoginApiMaimaiChn"; }
8 | public static String ratting() {
9 | return "GetUserPreviewApiMaimaiChn";
10 | }
11 | public static String juan() {
12 | return "UpsertUserChargelogApiMaimaiChn";
13 | }
14 | public static String logout() {
15 | return "UserLogoutApiMaimaiChn";
16 | }
17 | public static String userData() { return "GetUserDataApiMaimaiChn"; }
18 | public static String userExtend() { return "GetUserExtendApiMaimaiChn"; }
19 | public static String userOption() { return "GetUserOptionApiMaimaiChn"; }
20 | public static String userCharacterList() { return "16768656af052a9a3cd612e3a612a219"; } //旅行伙伴updata
21 | public static String userItemList() { return "e168a0bcd17a57ce9ce302b4ad9c4713";} //用户物品
22 | public static String userMapList() { return "GetUserMapApiMaimaiChn"; }
23 | }
24 |
25 | public static class Key {
26 | public static String AES(){
27 | return "n7bx6:@Fg_:2;5E89Phy7AyIcpxEQ:R@";
28 | }
29 | public static String IV(){
30 | return ";;KjR1C3hgB1ovXa";
31 | }
32 | public static String obfuscate(){return "BEs2D5vW";}
33 | }
34 |
35 | public static class ServerConfig {
36 | public static String Host() {
37 | return "maimai-gm.wahlap.com";
38 | }
39 |
40 | public static int Port() {
41 | return 42081;
42 | }
43 |
44 | public static String Path() {
45 | return "/Maimai2Servlet/";
46 | }
47 |
48 | public static String Version() {return "1.40"; }
49 | }
50 | public static String clientId() {
51 | return "A63E01E1191";
52 | }
53 |
54 | public static class Others {
55 | public static int Thread() { return 5; }
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/src/main/java/Connect/DecompressionUtils.java:
--------------------------------------------------------------------------------
1 | package Connect;
2 |
3 | import javax.crypto.Cipher;
4 | import javax.crypto.spec.IvParameterSpec;
5 | import javax.crypto.spec.SecretKeySpec;
6 | import java.io.ByteArrayOutputStream;
7 | import java.nio.charset.StandardCharsets;
8 | import java.security.InvalidAlgorithmParameterException;
9 | import java.security.InvalidKeyException;
10 | import java.security.NoSuchAlgorithmException;
11 | import java.util.zip.DataFormatException;
12 | import java.util.zip.Inflater;
13 | import Config.Setting;
14 |
15 | public class DecompressionUtils {
16 |
17 | public static byte[] decompress(byte[] compressedData) {
18 | try {
19 | Inflater inflater = new Inflater();
20 | inflater.setInput(compressedData);
21 | ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
22 | byte[] buffer = new byte[1024];
23 | while (!inflater.finished()) {
24 | int count = inflater.inflate(buffer);
25 | outputStream.write(buffer, 0, count);
26 | }
27 | return outputStream.toByteArray();
28 | } catch (DataFormatException e) {
29 | return compressedData;
30 | }
31 | }
32 |
33 | public static class AESUtils {
34 | private static final byte[] AES_KEY = Setting.Key.AES().getBytes(StandardCharsets.UTF_8);
35 | private static final byte[] AES_IV = Setting.Key.IV().getBytes(StandardCharsets.UTF_8);
36 |
37 | public static byte[] aesEncrypt(byte[] plaintext) {
38 | try {
39 | Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
40 | SecretKeySpec secretKey = new SecretKeySpec(AES_KEY, "AES");
41 | IvParameterSpec ivSpec = new IvParameterSpec(AES_IV);
42 | cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivSpec);
43 | return cipher.doFinal(plaintext);
44 | } catch (NoSuchAlgorithmException | InvalidKeyException | InvalidAlgorithmParameterException | javax.crypto.NoSuchPaddingException | javax.crypto.IllegalBlockSizeException | javax.crypto.BadPaddingException e) {
45 | throw new RuntimeException("AES 加密失败: " + e.getMessage());
46 | }
47 | }
48 |
49 | public static byte[] aesDecrypt(byte[] ciphertext) {
50 | try {
51 | Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
52 | SecretKeySpec secretKey = new SecretKeySpec(AES_KEY, "AES");
53 | IvParameterSpec ivSpec = new IvParameterSpec(AES_IV);
54 | cipher.init(Cipher.DECRYPT_MODE, secretKey, ivSpec);
55 | return cipher.doFinal(ciphertext);
56 | } catch (NoSuchAlgorithmException | InvalidKeyException | InvalidAlgorithmParameterException | javax.crypto.NoSuchPaddingException | javax.crypto.IllegalBlockSizeException | javax.crypto.BadPaddingException e) {
57 | throw new RuntimeException("AES 解密失败: " + e.getMessage());
58 | }
59 | }
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/src/main/java/Connect/Dispose.java:
--------------------------------------------------------------------------------
1 | package Connect;
2 |
3 | import java.nio.charset.StandardCharsets;
4 | import java.security.MessageDigest;
5 | import java.security.NoSuchAlgorithmException;
6 | import java.util.Map;
7 |
8 | import Config.ServerConfig;
9 | import Config.Setting;
10 |
11 | public class Dispose {
12 | public static String build(String userId, String Api_Url, String dataToEncrypt) {
13 | System.out.println(Api_Url+"+"+dataToEncrypt);
14 | byte[] plaintext = dataToEncrypt.getBytes(StandardCharsets.UTF_8);
15 |
16 | byte[] encryptedData = DecompressionUtils.AESUtils.aesEncrypt(plaintext);
17 |
18 | ServerConfig config = ServerConfig.getDefaultConfigForLogin(Api_Url); // 获取默认的服务器配置
19 |
20 | Map headers = RequestHeadersBuilder.buildHeaders(userId, encryptedData.length, config.getHost(), config.getPort(), Api_Url);
21 | try {
22 | byte[] responseData = HttpUtils.sendHttpRequest(config.getHost(), config.getPort(), config.getPath(), encryptedData, headers);
23 | byte[] decompressedData = DecompressionUtils.decompress(responseData);
24 | byte[] decryptedData = DecompressionUtils.AESUtils.aesDecrypt(decompressedData);
25 |
26 | // 转换为字符串并打印解密后的数据
27 | // System.out.println(new String(decryptedData, StandardCharsets.UTF_8));
28 | return new String(decryptedData, StandardCharsets.UTF_8);
29 | } catch (Exception e) {
30 | System.out.println("加密或解密失败: " + e.getMessage());
31 | return "Error: " + e.getMessage();
32 | }
33 | }
34 |
35 | private static String md5(String input) {
36 | try {
37 | MessageDigest md = MessageDigest.getInstance("MD5");
38 | byte[] hashBytes = md.digest(input.getBytes(StandardCharsets.UTF_8));
39 | StringBuilder hexString = new StringBuilder();
40 | for (byte b : hashBytes) {
41 | String hex = Integer.toHexString(0xff & b);
42 | if (hex.length() == 1) hexString.append('0');
43 | hexString.append(hex);
44 | }
45 | return hexString.toString();
46 | } catch (NoSuchAlgorithmException e) {
47 | throw new RuntimeException(e);
48 | }
49 | }
50 |
51 | public static String obfuscate(String param) {
52 | return md5(param + Setting.Key.obfuscate());
53 | }
54 | // public static void main(String[] args) {
55 | // System.out.println(obfuscate("UserLoginApiMaimaiChn"));
56 | // }
57 | }
58 |
--------------------------------------------------------------------------------
/src/main/java/Connect/HttpUtils.java:
--------------------------------------------------------------------------------
1 | package Connect;
2 |
3 | import javax.net.ssl.HttpsURLConnection;
4 | import java.io.ByteArrayOutputStream;
5 | import java.io.IOException;
6 | import java.io.InputStream;
7 | import java.io.OutputStream;
8 | import java.net.URL;
9 | import java.nio.charset.StandardCharsets;
10 | import java.util.Map;
11 |
12 |
13 | public class HttpUtils {
14 |
15 | public static byte[] sendHttpRequest(String host, int port, String path, byte[] requestData, Map headers) throws IOException {
16 | URL url = new URL("https", host, port, path); // 使用https协议
17 | HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); // 用HttpsURLConnection代替HttpURLConnection
18 | connection.setRequestMethod("POST");
19 | connection.setDoOutput(true);
20 |
21 | for (Map.Entry header : headers.entrySet()) {
22 | connection.setRequestProperty(header.getKey(), header.getValue());
23 | }
24 |
25 | try (OutputStream outputStream = connection.getOutputStream()) {
26 | outputStream.write(requestData);
27 | }
28 |
29 | int responseCode = connection.getResponseCode();
30 | if (responseCode == HttpsURLConnection.HTTP_OK) {
31 | try (InputStream inputStream = connection.getInputStream()) {
32 | ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
33 | byte[] buffer = new byte[1024];
34 | int bytesRead;
35 | while ((bytesRead = inputStream.read(buffer)) != -1) {
36 | outputStream.write(buffer, 0, bytesRead);
37 | }
38 | return outputStream.toByteArray();
39 | }
40 | } else {
41 | try (InputStream errorStream = connection.getErrorStream()) {
42 | ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
43 | byte[] buffer = new byte[1024];
44 | int bytesRead;
45 | while ((bytesRead = errorStream.read(buffer)) != -1) {
46 | outputStream.write(buffer, 0, bytesRead);
47 | }
48 | throw new IOException("请求失败: " + outputStream.toString(StandardCharsets.UTF_8));
49 | }
50 | }
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/src/main/java/Connect/RemoveLogin.java:
--------------------------------------------------------------------------------
1 | package Connect;
2 |
3 | import java.util.concurrent.Callable;
4 |
5 | import logic.Json;
6 |
7 | public class RemoveLogin implements Callable {
8 |
9 | private final String Userid;
10 | private long datetime;
11 |
12 | public RemoveLogin(String Userid, long datetime) {
13 | this.Userid = Userid;
14 | this.datetime = datetime;
15 | }
16 |
17 | @Override
18 | public Long call() {
19 | long res = datetime;
20 | int track = 0, order = 0;
21 |
22 | while (Json.isLogin(SendReq.Ratting(Userid)).equals("1")) {
23 | SendReq.Logout(Userid, datetime);
24 | System.out.println(datetime);
25 | datetime++;
26 |
27 | if (datetime - res == 60) {
28 | res = datetime;
29 | track++;
30 |
31 | if (track == 30) {
32 | datetime -= 3600;
33 | order++;
34 | if (order == 2) {
35 | System.out.println("失败");
36 | return 0L;
37 | }
38 | System.out.println("正推失败,尝试反推");
39 | }
40 | }
41 | }
42 | return datetime - 1;
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/Connect/RequestBodyBuilder.java:
--------------------------------------------------------------------------------
1 | package Connect;
2 |
3 | import java.time.LocalDateTime;
4 | import java.time.format.DateTimeFormatter;
5 | import Config.Setting;
6 | import logic.BuildUserAll;
7 |
8 | public class RequestBodyBuilder {
9 |
10 | public static String login(String userId, long currentTimestamp) {
11 | return String.format("{\"userId\":%s,\"accessCode\":\"\",\"regionId\":2,\"placeId\":2067,\"clientId\":\"%s\",\"dateTime\":%d,\"isContinue\":true,\"genericFlag\":0}", userId, Setting.clientId(), currentTimestamp);
12 | }
13 |
14 | public static String ratting(String userId) {
15 | return String.format("{\"userId\":%s,\"segaIdAuthKey\":\"\"}",userId);
16 | }
17 |
18 | public static String juan(String userId, int playerRating) {
19 | LocalDateTime currentTime = LocalDateTime.now();
20 | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.0");
21 |
22 | String purchaseDate = currentTime.format(formatter);
23 | String validDate = currentTime.plusDays(90).format(formatter);
24 |
25 | return String.format("{\"userId\":%s,\"userChargelog\":{\"chargeId\":6,\"price\":1,\"purchaseDate\":\"%s\",\"playCount\":1,\"playerRating\":%d,\"placeId\":2067,\"regionId\":2,\"clientId\":\"%s\"},\"userCharge\":{\"chargeId\":6,\"stock\":1,\"purchaseDate\":\"%s\",\"validDate\":\"%s\"}}", userId, purchaseDate, playerRating, Setting.clientId(), validDate, validDate);
26 | }
27 | public static String logout(String userId, long currentTimestamp) {
28 | return String.format("{\"userId\":%s,\"accessCode\":\"\",\"regionId\":2,\"placeId\":2067,\"clientId\":\"%s\",\"dateTime\":%d,\"type\":5}", userId, Setting.clientId() ,currentTimestamp);
29 | }
30 | public static String userData(String userId) {
31 | return String.format("{\"userId\":%s}", userId);
32 | }
33 | public static String userExtend(String userId) { return String.format("{\"userId\":%s}", userId); }
34 | public static String userOption(String userId) { return String.format("{\"userId\":%s}", userId); }
35 | public static String userMapList(String userId ,String nextIndex) { return String.format("{\"userId\":"+userId+",\"nextIndex\":"+nextIndex+",\"maxCount\":20}"); }
36 | public static String userCharacterList(String userId) {
37 | return String.format("{\"userId\":%s}", userId);
38 | }
39 |
40 | public static String UserAll(String userId, Long currentTimestamp) {
41 | return String.format("{\"userId\":" + userId + ",\"playlogId\":" + BuildUserAll.Basic(userId, currentTimestamp) + ",\"isEventMode\":false,\"isFreePlay\":false,\"upsertUserAll\":{\"userData\":" + BuildUserAll.userData(userId, currentTimestamp) + ",\"userExtend\":[" + BuildUserAll.userExtend(userId) + "],\"userOption\":[" + BuildUserAll.userOption(userId) + "],\"userCharacterList\":[],\"userGhost\":[],\"userMapList\":[]},\"userLoginBonusList\":[],\"userRatingList\":[]}}");
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/src/main/java/Connect/RequestHeadersBuilder.java:
--------------------------------------------------------------------------------
1 | package Connect;
2 |
3 | import Config.Setting;
4 |
5 | import java.util.LinkedHashMap;
6 | import java.util.Map;
7 |
8 | public class RequestHeadersBuilder {
9 |
10 | public static Map buildHeaders(String userId, int contentLength, String host, int port, String Api_Url) {
11 | Map headers = new LinkedHashMap<>();
12 | headers.put("number", "0");
13 | headers.put("Content-Type", "application/json");
14 | headers.put("User-Agent", String.format("%s#%s", Api_Url, userId));
15 | headers.put("charset", "UTF-8");
16 | headers.put("Mai-Encoding", String.format("%s", Setting.ServerConfig.Version()));
17 | headers.put("Content-Length", String.valueOf(contentLength));
18 | headers.put("Expect", "100-continue");
19 | headers.put("Host", String.format("%s:%d", host, port));
20 | return headers;
21 | }
22 | }
--------------------------------------------------------------------------------
/src/main/java/Connect/SendReq.java:
--------------------------------------------------------------------------------
1 | package Connect;
2 |
3 | import Config.Setting;
4 |
5 | public class SendReq {
6 | public static String Login(String Userid, Long currentTimestamp){
7 | return Dispose.build(Userid, Dispose.obfuscate(Setting.Api.Login()), RequestBodyBuilder.login(Userid, currentTimestamp));
8 | }
9 | public static String Ratting(String Userid){
10 | return Dispose.build(Userid, Dispose.obfuscate(Setting.Api.ratting()), RequestBodyBuilder.ratting(Userid));
11 | }
12 | public static String Track(String Userid,int Ratting){
13 | return Dispose.build(Userid, Dispose.obfuscate(Setting.Api.juan()), RequestBodyBuilder.juan(Userid, Ratting));
14 | }
15 | public static String Logout(String Userid, Long currentTimestamp){
16 | return Dispose.build(Userid, Dispose.obfuscate(Setting.Api.logout()), RequestBodyBuilder.logout(Userid, currentTimestamp));
17 | }
18 | public static String userData(String Userid){
19 | return Dispose.build(Userid, Dispose.obfuscate(Setting.Api.userData()), RequestBodyBuilder.userData(Userid));
20 | }
21 | public static String userExtend(String Userid){
22 | return Dispose.build(Userid, Dispose.obfuscate(Setting.Api.userExtend()), RequestBodyBuilder.userExtend(Userid));
23 | }
24 | public static String userOption(String Userid){
25 | return Dispose.build(Userid, Dispose.obfuscate(Setting.Api.userOption()), RequestBodyBuilder.userOption(Userid));
26 | }
27 | public static String userMapList(String Userid){
28 | String[] userMapAll = new String[4];
29 | userMapAll[0] = Dispose.build(Userid, Dispose.obfuscate(Setting.Api.userMapList()), RequestBodyBuilder.userMapList(Userid, "0"));
30 | userMapAll[1] = Dispose.build(Userid, Dispose.obfuscate(Setting.Api.userMapList()), RequestBodyBuilder.userMapList(Userid, "100005"));
31 | userMapAll[2] = Dispose.build(Userid, Dispose.obfuscate(Setting.Api.userMapList()), RequestBodyBuilder.userMapList(Userid, "200054"));
32 | userMapAll[3] = Dispose.build(Userid, Dispose.obfuscate(Setting.Api.userMapList()), RequestBodyBuilder.userMapList(Userid, "300058"));
33 | return userMapAll[0]+","+userMapAll[1]+","+userMapAll[2]+","+userMapAll[3];
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/META-INF/MANIFEST.MF:
--------------------------------------------------------------------------------
1 | Manifest-Version: 1.0
2 | Main-Class: Main
3 |
4 |
--------------------------------------------------------------------------------
/src/main/java/Main.java:
--------------------------------------------------------------------------------
1 | import Config.Setting;
2 | import Connect.RemoveLogin;
3 | import Connect.SendReq;
4 | import logic.Json;
5 | import logic.ModifyData;
6 | import logic.UserInputUtils;
7 |
8 | import java.util.concurrent.*;
9 |
10 | public class Main {
11 | public static void main(String[] args) {
12 |
13 | long currentTimestamp = System.currentTimeMillis() / 1000;
14 | System.out.println("当前时间戳:"+currentTimestamp);
15 | String Userid = UserInputUtils.getUserInput(); // 调用UserInputUtils的getUserInput方法用户输入获取 Userid
16 | String Select = UserInputUtils.Select(); // 从用户输入获取操作选择
17 |
18 | switch (Select) {
19 | case "1": // 如果选择1
20 | String loginResult = Json.tologinIn(SendReq.Login(Userid, currentTimestamp));
21 | System.out.println(loginResult);
22 | if (loginResult.matches("\\d+") && loginResult.length() > 10) {
23 | System.out.println("登录成功!");
24 | if (Json.Return(SendReq.Track(Userid, Json.GetRatting(SendReq.Ratting(Userid)))).equals("1")){
25 | System.out.println("获取成功!");
26 | } else {
27 | System.out.println("获取失败,或者已有卷");
28 | }
29 | if (Json.Return(SendReq.Logout(Userid,currentTimestamp)).equals("1")){
30 | if (Json.isLogin(SendReq.Ratting(Userid)).equals("0")){ //检查是否退出登录
31 | System.out.println("退出登录");
32 | } else {
33 | System.out.println("未成功退出登录");
34 | }
35 | }
36 | }else if (loginResult.equals("100")){
37 | System.out.println("警告,你已经登陆现在尝试直接获取");
38 | if (Json.Return(SendReq.Track(Userid, Json.GetRatting(SendReq.Ratting(Userid)))).equals("1")){
39 | System.out.println("获取成功!");
40 | } else {
41 | System.out.println("获取失败,或者已有卷");
42 | }
43 | }
44 | break;
45 | case "2":
46 | long datetime = UserInputUtils.TimeToTimestamp();
47 | ExecutorService executor = Executors.newFixedThreadPool(Setting.Others.Thread());
48 | RemoveLogin removeLogin = new RemoveLogin(Userid, datetime);
49 | Future future = executor.submit(removeLogin);
50 | try {
51 | // 获取并打印结果
52 | Long result = future.get();
53 | System.out.println("机台DataTime: " + result);
54 | } catch (InterruptedException | ExecutionException e) {
55 | System.out.println("获取机台DataTime失败QAQ");
56 | } finally {
57 | // 关闭 ExecutorService
58 | executor.shutdown();
59 | }
60 | break;
61 | case "3":
62 | try {
63 | System.out.println(ModifyData.menu(Userid,currentTimestamp));
64 | }catch (Exception e){
65 | System.out.println("发生错误!");
66 | SendReq.Logout(Userid, currentTimestamp);
67 | if (Json.Return(SendReq.Logout(Userid,currentTimestamp)).equals("1")){
68 | if (Json.isLogin(SendReq.Ratting(Userid)).equals("0")){ //检查是否退出登录
69 | System.out.println("退出登录");
70 | } else {
71 | System.out.println("未成功退出登录");
72 | }
73 | }
74 | }
75 | break;
76 | default:
77 | System.out.println("乱输是吧?奖励你关一把小黑屋");
78 | SendReq.Login(Userid, currentTimestamp);
79 | System.out.println(currentTimestamp);
80 | break;
81 | }
82 | }
83 | }
84 |
--------------------------------------------------------------------------------
/src/main/java/logic/BuildUserAll.java:
--------------------------------------------------------------------------------
1 | package logic;
2 |
3 | import Connect.SendReq;
4 |
5 | public class BuildUserAll {
6 | public static String Basic(String userid, Long currentTimestamp) {
7 | String codeId = Json.tologinIn(SendReq.Login(userid, currentTimestamp));
8 |
9 | // 检查是否是 loginId 或 returnCode
10 | if (codeId != null && codeId.matches("\\d+") && codeId.length() > 10) {
11 | System.out.println("Login successful, loginId: " + codeId);
12 | } else {
13 | // 处理 returnCode 情况
14 | if (!codeId.equals("1")) {
15 | switch (codeId) {
16 | case "null":
17 | case "100":
18 | case "102":
19 | System.out.println("登陆状态异常!可能是没有刷新二维码或者没有正确退出登录");
20 | if (Json.Return(SendReq.Logout(userid, currentTimestamp)).equals("1")) {
21 | if (Json.isLogin(SendReq.Ratting(userid)).equals("0")) {
22 | System.out.println("退出登录");
23 | } else {
24 | System.out.println("未成功退出登录");
25 | }
26 | }
27 | break;
28 | case "103":
29 | System.out.println("登陆状态异常!可能是错误的 userID");
30 | break;
31 | default:
32 | System.out.println("未知错误!" + codeId);
33 | }
34 | System.exit(0);
35 | }
36 | }
37 | return codeId;
38 | }
39 |
40 | public static String userData(String Userid,Long dateTime){
41 | return Json.toUserData(SendReq.userData(Userid),dateTime);
42 | }
43 |
44 | public static String userExtend(String Userid){
45 | return Json.touserExtend(SendReq.userExtend(Userid));
46 | }
47 |
48 | public static String userOption(String Userid){
49 | return Json.touserOption(SendReq.userOption(Userid));
50 | }
51 | public static String userMapList(String Userid){
52 | return Json.touserMapList(SendReq.userMapList(Userid));
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/src/main/java/logic/Json.java:
--------------------------------------------------------------------------------
1 | package logic;
2 |
3 | import com.fasterxml.jackson.core.JsonProcessingException;
4 | import com.fasterxml.jackson.databind.JsonNode;
5 | import com.fasterxml.jackson.databind.ObjectMapper;
6 | import com.fasterxml.jackson.databind.node.ArrayNode;
7 | import com.fasterxml.jackson.databind.node.ObjectNode;
8 | import com.fasterxml.jackson.databind.node.TextNode;
9 | import org.json.JSONObject;
10 |
11 | import java.io.IOException;
12 | import java.util.LinkedHashMap;
13 | import java.util.Map;
14 |
15 | public class Json {
16 |
17 | public static String Return(String decryptedString) {
18 | // 解析JSON数据
19 | JSONObject jsonObject = new JSONObject(decryptedString);
20 | return String.valueOf(jsonObject.getInt("returnCode"));
21 |
22 | }
23 |
24 | public static int GetRatting(String decryptedString) {
25 | // 解析JSON数据
26 | JSONObject jsonObject = new JSONObject(decryptedString);
27 | Object ratting = jsonObject.get("playerRating");
28 | return (int) ratting;
29 | }
30 |
31 | public static String isLogin(String decryptedString) {
32 | JSONObject jsonObject = new JSONObject(decryptedString);
33 | Object isLogin = jsonObject.get("isLogin");
34 | int returnCode;
35 | if (isLogin instanceof Boolean) {
36 | returnCode = (Boolean) isLogin ? 1 : 0; // 将 true 转换为 1,false 转换为 0
37 | } else {
38 | returnCode = jsonObject.getInt("isLogin"); // 如果不是布尔类型,直接尝试获取整数
39 | }
40 | // System.out.println(returnCode);
41 | return String.valueOf(returnCode);
42 | }
43 |
44 | private static boolean containsOnlyZeros(ArrayNode arrayNode) {
45 | for (JsonNode element : arrayNode) {
46 | if (!element.isInt() || element.intValue() != 0) {
47 | return false;
48 | }
49 | }
50 | return true;
51 | }
52 |
53 | // 辅助方法:将 null 值替换为空字符串,递归处理嵌套的对象或数组
54 | private static JsonNode replaceNullWithEmpty(JsonNode node) {
55 | if (node == null || node.isNull()) {
56 | return TextNode.valueOf(""); // 将 null 替换为 ""
57 | }
58 | if (node.isArray()) {
59 | ArrayNode arrayNode = (ArrayNode) node;
60 |
61 | // 检查是否是 [0, 0, 0, 0, 0],如果是,则替换为 []
62 | if (arrayNode.size() == 5 && containsOnlyZeros(arrayNode)) {
63 | arrayNode.removeAll(); // 清空数组
64 | }
65 | }
66 | return node; // 如果不是 null,返回原值
67 | }
68 |
69 | public static String toUserData(String jsonString, Long dateTime) {
70 | try {
71 |
72 | ObjectMapper mapper = new ObjectMapper();
73 | // 将 JSON 字符串转换为 Jackson 的 ObjectNode
74 | ObjectNode jsonObject = (ObjectNode) mapper.readTree(jsonString);
75 |
76 | // 创建一个新的有序 Map 来保存字段的顺序
77 | Map orderedFields = new LinkedHashMap<>();
78 |
79 | // 按你希望的顺序定义字段
80 | if (jsonObject.has("userData")) {
81 | ObjectNode userData = (ObjectNode) jsonObject.get("userData");
82 |
83 | // 删除不需要的字段
84 | userData.remove("friendCode");
85 | userData.remove("nameplateId");
86 | userData.remove("trophyId");
87 | userData.remove("cmLastEmoneyCredit");
88 | userData.remove("cmLastEmoneyBrand");
89 |
90 | // 例如,先处理某些特定字段,再处理其他字段
91 | orderedFields.put("accessCode", replaceNullWithEmpty(userData.get("accessCode")));
92 | orderedFields.put("userName", replaceNullWithEmpty(userData.get("userName")));
93 | orderedFields.put("isNetMember", replaceNullWithEmpty(userData.get("isNetMember")));
94 | orderedFields.put("iconId", replaceNullWithEmpty(userData.get("iconId")));
95 | orderedFields.put("plateId", replaceNullWithEmpty(userData.get("plateId")));
96 | orderedFields.put("titleId", replaceNullWithEmpty(userData.get("titleId")));
97 | orderedFields.put("partnerId", replaceNullWithEmpty(userData.get("partnerId")));
98 | orderedFields.put("frameId", replaceNullWithEmpty(userData.get("frameId")));
99 | orderedFields.put("selectMapId", replaceNullWithEmpty(userData.get("selectMapId")));
100 | orderedFields.put("totalAwake", replaceNullWithEmpty(userData.get("totalAwake")));
101 | orderedFields.put("gradeRating", replaceNullWithEmpty(userData.get("gradeRating")));
102 | orderedFields.put("musicRating", replaceNullWithEmpty(userData.get("musicRating")));
103 | orderedFields.put("playerRating", replaceNullWithEmpty(userData.get("playerRating")));
104 | orderedFields.put("highestRating", replaceNullWithEmpty(userData.get("highestRating")));
105 | orderedFields.put("gradeRank", replaceNullWithEmpty(userData.get("gradeRank")));
106 | orderedFields.put("classRank", replaceNullWithEmpty(userData.get("classRank")));
107 | orderedFields.put("courseRank", replaceNullWithEmpty(userData.get("courseRank")));
108 | orderedFields.put("charaSlot", replaceNullWithEmpty(userData.get("charaSlot")));
109 | orderedFields.put("charaLockSlot", replaceNullWithEmpty(userData.get("charaLockSlot")));
110 | orderedFields.put("contentBit", replaceNullWithEmpty(userData.get("contentBit")));
111 | orderedFields.put("playCount", replaceNullWithEmpty(userData.get("playCount")));
112 | orderedFields.put("currentPlayCount", replaceNullWithEmpty(userData.get("currentPlayCount")));
113 | orderedFields.put("renameCredit", replaceNullWithEmpty(userData.get("renameCredit")));
114 | orderedFields.put("mapStock", replaceNullWithEmpty(userData.get("mapStock")));
115 | orderedFields.put("eventWatchedDate", replaceNullWithEmpty(userData.get("eventWatchedDate")));
116 | orderedFields.put("lastGameId", replaceNullWithEmpty(userData.get("lastGameId")));
117 | orderedFields.put("lastRomVersion", replaceNullWithEmpty(userData.get("lastRomVersion")));
118 | orderedFields.put("lastDataVersion", replaceNullWithEmpty(userData.get("lastDataVersion")));
119 | orderedFields.put("lastLoginDate", replaceNullWithEmpty(userData.get("lastLoginDate")));
120 | orderedFields.put("lastPlayDate", replaceNullWithEmpty(userData.get("lastPlayDate")));
121 | orderedFields.put("lastPlayCredit", replaceNullWithEmpty(userData.get("lastPlayCredit")));
122 | orderedFields.put("lastPlayMode", replaceNullWithEmpty(userData.get("lastPlayMode")));
123 | orderedFields.put("lastPlaceId", replaceNullWithEmpty(userData.get("lastPlaceId")));
124 | orderedFields.put("lastPlaceName", replaceNullWithEmpty(userData.get("lastPlaceName")));
125 | orderedFields.put("lastAllNetId", replaceNullWithEmpty(userData.get("lastAllNetId")));
126 | orderedFields.put("lastRegionId",replaceNullWithEmpty(userData.get("lastRegionId")));
127 | orderedFields.put("lastRegionName", replaceNullWithEmpty(userData.get("lastRegionName")));
128 | orderedFields.put("lastClientId", replaceNullWithEmpty(userData.get("lastPlaceName")));
129 | orderedFields.put("lastCountryCode", replaceNullWithEmpty(userData.get("lastCountryCode")));
130 | orderedFields.put("lastSelectEMoney", replaceNullWithEmpty(userData.get("lastSelectEMoney")));
131 | orderedFields.put("lastSelectTicket", replaceNullWithEmpty(userData.get("lastSelectTicket")));
132 | orderedFields.put("lastSelectCourse", replaceNullWithEmpty(userData.get("lastSelectCourse")));
133 | orderedFields.put("lastCountCourse", replaceNullWithEmpty(userData.get("lastCountCourse")));
134 | orderedFields.put("firstGameId", replaceNullWithEmpty(userData.get("firstGameId")));
135 | orderedFields.put("firstRomVersion", replaceNullWithEmpty(userData.get("firstRomVersion")));
136 | orderedFields.put("firstDataVersion", replaceNullWithEmpty(userData.get("firstDataVersion")));
137 | orderedFields.put("firstPlayDate", replaceNullWithEmpty(userData.get("firstPlayDate")));
138 | orderedFields.put("compatibleCmVersion", replaceNullWithEmpty(userData.get("compatibleCmVersion")));
139 | orderedFields.put("dailyBonusDate", replaceNullWithEmpty(userData.get("dailyBonusDate")));
140 | orderedFields.put("dailyCourseBonusDate", replaceNullWithEmpty(userData.get("dailyCourseBonusDate")));
141 | orderedFields.put("lastPairLoginDate", replaceNullWithEmpty(userData.get("lastPairLoginDate")));
142 | orderedFields.put("lastTrialPlayDate", replaceNullWithEmpty(userData.get("lastTrialPlayDate")));
143 | orderedFields.put("playVsCount", replaceNullWithEmpty(userData.get("playVsCount")));
144 | orderedFields.put("playSyncCount", replaceNullWithEmpty(userData.get("playSyncCount")));
145 | orderedFields.put("winCount", replaceNullWithEmpty(userData.get("winCount")));
146 | orderedFields.put("helpCount", replaceNullWithEmpty(userData.get("helpCount")));
147 | orderedFields.put("comboCount", replaceNullWithEmpty(userData.get("comboCount")));
148 | orderedFields.put("totalDeluxscore", replaceNullWithEmpty(userData.get("totalDeluxscore")));
149 | orderedFields.put("totalBasicDeluxscore", replaceNullWithEmpty(userData.get("totalBasicDeluxscore")));
150 | orderedFields.put("totalAdvancedDeluxscore", replaceNullWithEmpty(userData.get("totalAdvancedDeluxscore")));
151 | orderedFields.put("totalExpertDeluxscore", replaceNullWithEmpty(userData.get("totalExpertDeluxscore")));
152 | orderedFields.put("totalMasterDeluxscore", replaceNullWithEmpty(userData.get("totalMasterDeluxscore")));
153 | orderedFields.put("totalReMasterDeluxscore", replaceNullWithEmpty(userData.get("totalReMasterDeluxscore")));
154 | orderedFields.put("totalSync", replaceNullWithEmpty(userData.get("totalSync")));
155 | orderedFields.put("totalBasicSync", replaceNullWithEmpty(userData.get("totalBasicSync")));
156 | orderedFields.put("totalAdvancedSync", replaceNullWithEmpty(userData.get("totalAdvancedSync")));
157 | orderedFields.put("totalExpertSync", replaceNullWithEmpty(userData.get("totalExpertSync")));
158 | orderedFields.put("totalMasterSync", replaceNullWithEmpty(userData.get("totalMasterSync")));
159 | orderedFields.put("totalReMasterSync", replaceNullWithEmpty(userData.get("totalReMasterSync")));
160 | orderedFields.put("totalAchievement", replaceNullWithEmpty(userData.get("totalAchievement")));
161 | orderedFields.put("totalBasicAchievement", replaceNullWithEmpty(userData.get("totalBasicAchievement")));
162 | orderedFields.put("totalAdvancedAchievement", replaceNullWithEmpty(userData.get("totalAdvancedAchievement")));
163 | orderedFields.put("totalExpertAchievement", replaceNullWithEmpty(userData.get("totalExpertAchievement")));
164 | orderedFields.put("totalMasterAchievement", replaceNullWithEmpty(userData.get("totalMasterAchievement")));
165 | orderedFields.put("totalReMasterAchievement", replaceNullWithEmpty(userData.get("totalReMasterAchievement")));
166 | orderedFields.put("playerOldRating", replaceNullWithEmpty(userData.get("playerOldRating")));
167 | orderedFields.put("playerNewRating", replaceNullWithEmpty(userData.get("playerNewRating")));
168 |
169 | // 处理 datetime 字段
170 | if (userData.has("dateTime")) {
171 | JsonNode dateTimeNode = userData.get("dateTime");
172 | if (dateTimeNode.isNull() || dateTimeNode.asText().isEmpty()) {
173 | orderedFields.put("dateTime", TextNode.valueOf(String.valueOf(dateTime)));
174 | } else {
175 | orderedFields.put("dateTime", replaceNullWithEmpty(dateTimeNode));
176 | }
177 | } else {
178 | // 如果没有 datetime 字段,添加时间戳
179 | orderedFields.put("dateTime", TextNode.valueOf(String.valueOf(dateTime)));
180 | }
181 | }
182 |
183 | // 创建一个新的 ObjectNode 按照顺序填充字段
184 | ObjectNode orderedObjectNode = mapper.createObjectNode();
185 | orderedFields.forEach(orderedObjectNode::set); // 使用 'set' 方法来避免类型冲突
186 |
187 | // 将处理好的对象转换回 JSON 字符串
188 | System.out.println(mapper.writeValueAsString(orderedObjectNode));
189 | return mapper.writeValueAsString(orderedObjectNode);
190 | } catch (IOException e) {
191 | e.printStackTrace();
192 | return null;
193 | }
194 | }
195 |
196 | public static String touserExtend(String jsonString) {
197 | try {
198 | ObjectMapper mapper = new ObjectMapper();
199 | // 将 JSON 字符串转换为 Jackson 的 ObjectNode
200 | ObjectNode jsonObject = (ObjectNode) mapper.readTree(jsonString);
201 |
202 | Map orderedFields = new LinkedHashMap<>();
203 |
204 | if (jsonObject.has("userExtend")) {
205 | ObjectNode userData = (ObjectNode) jsonObject.get("userExtend");
206 | orderedFields.put("selectMusicId", replaceNullWithEmpty(userData.get("selectMusicId")));
207 | orderedFields.put("selectDifficultyId", replaceNullWithEmpty(userData.get("selectDifficultyId")));
208 | orderedFields.put("categoryIndex", replaceNullWithEmpty(userData.get("categoryIndex")));
209 | orderedFields.put("musicIndex", replaceNullWithEmpty(userData.get("musicIndex")));
210 | orderedFields.put("extraFlag", replaceNullWithEmpty(userData.get("")));
211 | orderedFields.put("selectScoreType", replaceNullWithEmpty(userData.get("selectScoreType")));
212 | orderedFields.put("extendContentBit", replaceNullWithEmpty(userData.get("extendContentBit")));
213 | orderedFields.put("isPhotoAgree", replaceNullWithEmpty(userData.get("isPhotoAgree")));
214 | orderedFields.put("isGotoCodeRead", replaceNullWithEmpty(userData.get("isGotoCodeRead")));
215 | orderedFields.put("selectResultDetails", replaceNullWithEmpty(userData.get("selectResultDetails")));
216 | orderedFields.put("selectResultScoreViewType", replaceNullWithEmpty(userData.get("selectResultScoreViewType")));
217 | orderedFields.put("sortCategorySetting", replaceNullWithEmpty(userData.get("sortCategorySetting")));
218 | orderedFields.put("sortMusicSetting", replaceNullWithEmpty(userData.get("sortMusicSetting")));
219 | orderedFields.put("playStatusSetting", replaceNullWithEmpty(userData.get("playStatusSetting")));
220 | orderedFields.put("selectedCardList", replaceNullWithEmpty(userData.get("selectedCardList")));
221 | orderedFields.put("encountMapNpcList", replaceNullWithEmpty(userData.get("encountMapNpcList")));
222 | }
223 |
224 | // 创建一个新的 ObjectNode 按照顺序填充字段
225 | ObjectNode orderedObjectNode = mapper.createObjectNode();
226 | orderedFields.forEach(orderedObjectNode::set); // 使用 'set' 方法来避免类型冲突
227 |
228 | // 将处理好的对象转换回 JSON 字符串
229 | System.out.println(mapper.writeValueAsString(orderedObjectNode));
230 | return mapper.writeValueAsString(orderedObjectNode);
231 |
232 | } catch (JsonProcessingException e) {
233 | throw new RuntimeException(e);
234 | }
235 | }
236 |
237 | public static String touserOption(String jsonString) {
238 | try {
239 | ObjectMapper mapper = new ObjectMapper();
240 | // 将 JSON 字符串转换为 Jackson 的 ObjectNode
241 | ObjectNode jsonObject = (ObjectNode) mapper.readTree(jsonString);
242 |
243 | // 获取 userOption 节点
244 | JsonNode userOptionNode = jsonObject.get("userOption");
245 |
246 | // 返回 userOption 节点的字符串
247 | return userOptionNode.toString();
248 | } catch (Exception e) {
249 | throw new RuntimeException(e);
250 | }
251 | }
252 |
253 | public static String touserMapList(String jsonString) {
254 | try {
255 | ObjectMapper mapper = new ObjectMapper();
256 | // 将 JSON 字符串转换为 Jackson 的 ObjectNode
257 | ObjectNode jsonObject = (ObjectNode) mapper.readTree(jsonString);
258 |
259 | // 获取 userOption 节点
260 | JsonNode userOptionNode = jsonObject.get("userMapList");
261 |
262 | // 返回 userOption 节点的字符串
263 | return userOptionNode.toString();
264 | } catch (Exception e) {
265 | throw new RuntimeException(e);
266 | }
267 | }
268 | public static String tologinIn(String jsonString) {
269 | try {
270 | System.out.println(jsonString);
271 | // 创建 Jackson 的 ObjectMapper 实例
272 | ObjectMapper objectMapper = new ObjectMapper();
273 |
274 | // 解析 JSON 字符串为 JsonNode
275 | JsonNode jsonNode = objectMapper.readTree(jsonString);
276 |
277 | // 检查 returnCode 是否存在
278 | if (jsonNode.has("returnCode")) {
279 | int returnCode = jsonNode.get("returnCode").asInt();
280 | // 如果 returnCode 为 1 或 100,并且 loginId 存在,则返回 loginId
281 | if ((returnCode == 1) && jsonNode.has("loginId")) {
282 | return jsonNode.get("loginId").asText();
283 | } else {
284 | // returnCode 不为 1 或 100 时,返回 returnCode 的值
285 | return String.valueOf(returnCode);
286 | }
287 | }
288 | } catch (Exception e) {
289 | e.printStackTrace();
290 | }
291 | // 如果解析过程中出现异常,返回 null
292 | return null;
293 | }
294 | }
295 |
--------------------------------------------------------------------------------
/src/main/java/logic/ModifyData.java:
--------------------------------------------------------------------------------
1 | package logic;
2 |
3 | import Config.Setting;
4 | import Connect.Dispose;
5 | import Connect.RequestBodyBuilder;
6 | import Connect.RequestHeadersBuilder;
7 |
8 | public class ModifyData {
9 | public static String menu(String userId, Long currentTimestamp) {
10 | return RequestBodyBuilder.UserAll(userId, currentTimestamp);
11 | }
12 | // String Select = UserInputUtils.GetUserInputForUserAll();
13 | // switch (Select) {
14 | // case "1":
15 | //
16 | // break;
17 | // }
18 | // }
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/logic/ReturnCode.java:
--------------------------------------------------------------------------------
1 | package logic;
2 |
3 | import org.json.JSONException;
4 | import org.json.JSONObject;
5 |
6 | public class ReturnCode {
7 | public static String Return(String decryptedString) {
8 | // 解析JSON数据
9 | JSONObject jsonObject = new JSONObject(decryptedString);
10 | return String.valueOf(jsonObject.getInt("returnCode"));
11 |
12 | }
13 |
14 | public static String GetRatting(String decryptedString) {
15 | // 解析JSON数据
16 | JSONObject jsonObject = new JSONObject(decryptedString);
17 | Object ratting = jsonObject.get("playerRating");
18 |
19 | // 检查类型并进行转换
20 | if (ratting instanceof Integer) {
21 | return String.valueOf(ratting); // 如果是整数,将其转换为字符串
22 | } else if (ratting instanceof String) {
23 | return (String) ratting; // 如果已经是字符串,直接返回
24 | } else {
25 | throw new JSONException("playerRating的意外类型");
26 | }
27 | }
28 |
29 | public static String isLogin(String decryptedString) {
30 | JSONObject jsonObject = new JSONObject(decryptedString);
31 | Object isLogin = jsonObject.get("isLogin");
32 | int returnCode;
33 | if (isLogin instanceof Boolean) {
34 | returnCode = (Boolean) isLogin ? 1 : 0; // 将 true 转换为 1,false 转换为 0
35 | } else {
36 | returnCode = jsonObject.getInt("isLogin"); // 如果不是布尔类型,直接尝试获取整数
37 | }
38 | // System.out.println(returnCode);
39 | return String.valueOf(returnCode);
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/main/java/logic/UserInputUtils.java:
--------------------------------------------------------------------------------
1 | package logic;
2 |
3 | import java.util.Scanner;
4 | import java.time.LocalDate;
5 | import java.time.LocalDateTime;
6 | import java.time.ZoneId;
7 |
8 | public class UserInputUtils {
9 |
10 | public static String getUserInput() {
11 | // System.out.println(System.currentTimeMillis());
12 | System.out.print("请输入 userId:");
13 | Scanner scanner = new Scanner(System.in);
14 | return scanner.nextLine().trim();
15 | }
16 | public static String Select() {
17 | System.out.println("扣1发卷扣2解小黑屋扣3修改用户数据");
18 | Scanner scanner = new Scanner(System.in);
19 | return scanner.nextLine().trim();
20 | }
21 | public static long TimeToTimestamp(){
22 | // 获取当前日期
23 | LocalDate currentDate = LocalDate.now();
24 | Scanner scanner = new Scanner(System.in);
25 |
26 | System.out.print("是否知道机台DataTime?(1/0)");
27 | int is = scanner.nextInt();
28 | if(is == 1){
29 | System.out.println("输入机台DataTime(一次只推±30分钟):");
30 | return scanner.nextInt();
31 | }
32 | else{
33 | // 获取用户输入的时和分
34 | System.out.print("请输入小时(0-23): ");
35 | int hour = scanner.nextInt();
36 | System.out.print("请输入分钟(0-59): ");
37 | int minute = scanner.nextInt();
38 |
39 | // 将年月日和用户输入的时分合并成LocalDateTime对象
40 | LocalDateTime dateTime = currentDate.atTime(hour, minute);
41 |
42 | // 将LocalDateTime对象转换为时间戳
43 | return dateTime.atZone(ZoneId.systemDefault()).toEpochSecond();
44 | }
45 | }
46 | public static String GetUserInputForUserAll(){
47 | System.out.println("1.修改上次签到时间");
48 | System.out.println("2.修改玩家Ratting");
49 | System.out.println("3.修改玩家歌曲数据");
50 | System.out.println("4.获得歌曲");
51 | System.out.println("5.快速打段");
52 | System.out.println("6.修改Best50");
53 | System.out.print("请输入你的选择:");
54 | Scanner scanner = new Scanner(System.in);
55 | return scanner.nextLine().trim();
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/src/main/resources/META-INF/plugin.yml:
--------------------------------------------------------------------------------
1 | id: Mai.track.Bot
2 | name: MaiBot
3 | version: 1.0
4 | author: natsunokonoha
5 |
--------------------------------------------------------------------------------
/userall.txt:
--------------------------------------------------------------------------------
1 | {"userId":11764337,"playlogId":7397094407213678836,"isEventMode":false,"isFreePlay":false,"upsertUserAll":{"userData":[{"accessCode":"","userName":"DDDDDDDD","isNetMember":1,"iconId":201,"plateId":601,"titleId":150006,"partnerId":1,"frameId":1,"selectMapId":350005,"totalAwake":354,"gradeRating":0,"musicRating":13390,"playerRating":13390,"highestRating":99999,"gradeRank":0,"classRank":0,"courseRank":0,"charaSlot":[101,256001,605,604,603],"charaLockSlot":[0,256001,0,0,0],"contentBit":259116768,"playCount":87,"currentPlayCount":3,"renameCredit":0,"mapStock":0,"eventWatchedDate":"2024-07-30 00:24:14.0","lastGameId":"SDGB","lastRomVersion":"1.41.00","lastDataVersion":"1.40.02","lastLoginDate":"2024-07-30 00:24:14.0","lastPlayDate":"2024-07-30 00:27:17.0","lastPlayCredit":1,"lastPlayMode":0,"lastPlaceId":2067,"lastPlaceName":"童年搭档重庆江北店","lastAllNetId":0,"lastRegionId":2,"lastRegionName":"重庆","lastClientId":"A63E01E1216","lastCountryCode":"CHN","lastSelectEMoney":0,"lastSelectTicket":0,"lastSelectCourse":352304,"lastCountCourse":0,"firstGameId":"SDGB","firstRomVersion":"1.31.00","firstDataVersion":"1.30.06","firstPlayDate":"2023-11-03 14:14:48","compatibleCmVersion":"0.00.00","dailyBonusDate":"1970-01-01 08:00:00","dailyCourseBonusDate":"2024-06-20 00:00:00","lastPairLoginDate":"2024-07-25 17:53:02","lastTrialPlayDate":"1970-01-01 08:00:00","playVsCount":0,"playSyncCount":0,"winCount":0,"helpCount":0,"comboCount":0,"totalDeluxscore":397380,"totalBasicDeluxscore":1239,"totalAdvancedDeluxscore":4950,"totalExpertDeluxscore":85760,"totalMasterDeluxscore":260014,"totalReMasterDeluxscore":45417,"totalSync":21,"totalBasicSync":4,"totalAdvancedSync":0,"totalExpertSync":8,"totalMasterSync":8,"totalReMasterSync":1,"totalAchievement":197523026,"totalBasicAchievement":4040000,"totalAdvancedAchievement":5016337,"totalExpertAchievement":51408981,"totalMasterAchievement":118933829,"totalReMasterAchievement":18123879,"playerOldRating":11333,"playerNewRating":2057,"banState":0,"dateTime":1722273805}],"userExtend":[{"selectMusicId":803,"selectDifficultyId":4,"categoryIndex":3022,"musicIndex":31,"extraFlag":929,"selectScoreType":1,"extendContentBit":4,"isPhotoAgree":false,"isGotoCodeRead":false,"selectResultDetails":false,"selectResultScoreViewType":0,"sortCategorySetting":3,"sortMusicSetting":2,"playStatusSetting":0,"selectedCardList":[],"encountMapNpcList":[]}],"userOption":[{"optionKind":3,"noteSpeed":26,"slideSpeed":14,"touchSpeed":26,"tapDesign":1,"holdDesign":1,"slideDesign":1,"starType":1,"outlineDesign":2,"noteSize":1,"slideSize":1,"touchSize":1,"starRotate":0,"dispCenter":4,"outFrameType":1,"dispChain":2,"dispRate":0,"dispBar":0,"touchEffect":0,"submonitorAnimation":2,"submonitorAchive":0,"submonitorAppeal":1,"matching":1,"trackSkip":0,"brightness":0,"mirrorMode":0,"dispJudge":11,"dispJudgePos":5,"dispJudgeTouchPos":1,"adjustTiming":20,"judgeTiming":20,"ansVolume":6,"tapHoldVolume":5,"criticalSe":0,"tapSe":0,"breakSe":0,"breakVolume":5,"exSe":0,"exVolume":5,"slideSe":0,"slideVolume":5,"breakSlideVolume":5,"touchVolume":5,"touchHoldVolume":5,"damageSeVolume":5,"headPhoneVolume":2,"sortTab":0,"sortMusic":0}],"userCharacterList":[],"userGhost":[],"userMapList":[{"mapId":33,"distance":8610,"isLock":false,"isClear":false,"isComplete":true,"unlockFlag":1},{"mapId":34,"distance":17000,"isLock":false,"isClear":false,"isComplete":true,"unlockFlag":1},{"mapId":35,"distance":35000,"isLock":false,"isClear":false,"isComplete":true,"unlockFlag":1},{"mapId":40,"distance":14000,"isLock":false,"isClear":false,"isComplete":true,"unlockFlag":1},{"mapId":42,"distance":7800,"isLock":false,"isClear":false,"isComplete":true,"unlockFlag":1},{"mapId":100053,"distance":364000,"isLock":false,"isClear":false,"isComplete":true,"unlockFlag":1},{"mapId":100054,"distance":420000,"isLock":false,"isClear":false,"isComplete":true,"unlockFlag":1},{"mapId":100057,"distance":364000,"isLock":false,"isClear":false,"isComplete":true,"unlockFlag":1},{"mapId":100060,"distance":797000,"isLock":false,"isClear":false,"isComplete":true,"unlockFlag":1},{"mapId":350004,"distance":0,"isLock":false,"isClear":false,"isComplete":false,"unlockFlag":0},{"mapId":350005,"distance":125000,"isLock":false,"isClear":false,"isComplete":false,"unlockFlag":0},{"mapId":350006,"distance":0,"isLock":false,"isClear":false,"isComplete":false,"unlockFlag":0},{"mapId":350007,"distance":0,"isLock":false,"isClear":false,"isComplete":false,"unlockFlag":0},{"mapId":400001,"distance":0,"isLock":false,"isClear":false,"isComplete":false,"unlockFlag":0},{"mapId":400005,"distance":0,"isLock":false,"isClear":false,"isComplete":false,"unlockFlag":0}],"userLoginBonusList":[{"bonusId":601,"point":5,"isCurrent":true,"isComplete":false}],"userRatingList":[{"rating":0,"ratingList":[{"musicId":834,"level":4,"romVersion":19998,"achievement":1010000},{"musicId":834,"level":3,"romVersion":19998,"achievement":1010000},{"musicId":799,"level":4,"romVersion":19992,"achievement":1010000},{"musicId":833,"level":4,"romVersion":19997,"achievement":1010000},{"musicId":227,"level":4,"romVersion":12005,"achievement":1010000},{"musicId":812,"level":4,"romVersion":19994,"achievement":1010000},{"musicId":799,"level":3,"romVersion":19992,"achievement":1010000},{"musicId":833,"level":3,"romVersion":19997,"achievement":1010000},{"musicId":11235,"level":3,"romVersion":22002,"achievement":1010000},{"musicId":844,"level":3,"romVersion":19912,"achievement":1010000},{"musicId":11222,"level":3,"romVersion":21007,"achievement":1010000},{"musicId":11307,"level":3,"romVersion":22006,"achievement":1009500},{"musicId":11374,"level":3,"romVersion":22005,"achievement":1008925},{"musicId":531,"level":3,"romVersion":17018,"achievement":1010000},{"musicId":852,"level":3,"romVersion":19900,"achievement":1010000},{"musicId":581,"level":3,"romVersion":18018,"achievement":1010000},{"musicId":494,"level":3,"romVersion":17015,"achievement":1010000},{"musicId":11426,"level":3,"romVersion":23001,"achievement":1010000},{"musicId":239,"level":3,"romVersion":12005,"achievement":1010000},{"musicId":796,"level":3,"romVersion":19900,"achievement":1010000},{"musicId":379,"level":3,"romVersion":14010,"achievement":1010000},{"musicId":389,"level":4,"romVersion":14002,"achievement":1010000},{"musicId":261,"level":4,"romVersion":12003,"achievement":1010000},{"musicId":227,"level":3,"romVersion":12005,"achievement":1010000},{"musicId":688,"level":3,"romVersion":19006,"achievement":1010000},{"musicId":11209,"level":3,"romVersion":21007,"achievement":1010000},{"musicId":556,"level":3,"romVersion":18001,"achievement":1010000},{"musicId":191,"level":3,"romVersion":12000,"achievement":1010000},{"musicId":381,"level":3,"romVersion":14000,"achievement":1010000},{"musicId":11575,"level":3,"romVersion":23001,"achievement":1009322},{"musicId":387,"level":3,"romVersion":14004,"achievement":1000123},{"musicId":495,"level":3,"romVersion":17011,"achievement":1010000},{"musicId":11283,"level":3,"romVersion":22000,"achievement":1010000},{"musicId":682,"level":3,"romVersion":19004,"achievement":1010000},{"musicId":238,"level":3,"romVersion":12000,"achievement":1010000}],"newRatingList":[{"musicId":11560,"level":3,"romVersion":24000,"achievement":1008840},{"musicId":11555,"level":3,"romVersion":24000,"achievement":1003126},{"musicId":11558,"level":4,"romVersion":24000,"achievement":990478},{"musicId":11528,"level":2,"romVersion":24000,"achievement":1004679},{"musicId":11561,"level":3,"romVersion":24000,"achievement":1010000},{"musicId":11556,"level":2,"romVersion":24000,"achievement":1010000},{"musicId":11529,"level":3,"romVersion":24000,"achievement":968838},{"musicId":10315,"level":2,"romVersion":24000,"achievement":1010000}],"nextRatingList":[{"musicId":736,"level":3,"romVersion":19500,"achievement":1000123},{"musicId":101,"level":3,"romVersion":11000,"achievement":1000123},{"musicId":558,"level":3,"romVersion":18000,"achievement":1000031},{"musicId":548,"level":3,"romVersion":18008,"achievement":994247},{"musicId":227,"level":2,"romVersion":12005,"achievement":1002325},{"musicId":11311,"level":2,"romVersion":22007,"achievement":1004436},{"musicId":812,"level":2,"romVersion":19994,"achievement":1002251},{"musicId":11568,"level":3,"romVersion":23000,"achievement":992767},{"musicId":11433,"level":3,"romVersion":23002,"achievement":994667},{"musicId":833,"level":2,"romVersion":19997,"achievement":992323}],"nextNewRatingList":[],"udemae":{"rate":0,"maxRate":0,"classValue":0,"maxClassValue":0,"totalWinNum":107,"totalLoseNum":1,"maxWinNum":102,"maxLoseNum":1,"winNum":102,"loseNum":0,"npcTotalWinNum":0,"npcTotalLoseNum":0,"npcMaxWinNum":0,"npcMaxLoseNum":0,"npcWinNum":0,"npcLoseNum":0}}],"userItemList":[],"userMusicDetailList":[{"musicId":803,"level":4,"playCount":1,"achievement":0,"comboStatus":0,"syncStatus":0,"deluxscoreMax":0,"scoreRank":0,"extNum1":0}],"userCourseList":[],"userFriendSeasonRankingList":[{"seasonId":2015,"point":10,"rank":0,"rewardGet":false,"userName":"DDDDDDDD","recordDate":"2024-07-30 00:27:02.0"}],"userChargeList":[{"chargeId":2,"stock":0,"purchaseDate":"2024-06-29 22:28:25","validDate":"2024-09-27 04:00:00"},{"chargeId":3,"stock":0,"purchaseDate":"2024-07-03 01:30:55","validDate":"2024-10-01 01:30:55"},{"chargeId":6,"stock":0,"purchaseDate":"2024-06-24 22:44:31","validDate":"2024-09-22 04:00:00"}],"userFavoriteList":[],"userActivityList":[{"playList":[{"kind":1,"id":25,"sortNumber":1720600218,"param1":833,"param2":3,"param3":148,"param4":0},{"kind":1,"id":10,"sortNumber":1720684100,"param1":0,"param2":0,"param3":0,"param4":0},{"kind":1,"id":33,"sortNumber":1720684177,"param1":833,"param2":3,"param3":148,"param4":0},{"kind":1,"id":25,"sortNumber":1720684177,"param1":833,"param2":3,"param3":148,"param4":0},{"kind":1,"id":10,"sortNumber":1721549515,"param1":0,"param2":0,"param3":0,"param4":0},{"kind":1,"id":33,"sortNumber":1721029246,"param1":834,"param2":3,"param3":149,"param4":0},{"kind":1,"id":25,"sortNumber":1721029246,"param1":834,"param2":3,"param3":149,"param4":0},{"kind":1,"id":10,"sortNumber":1721727848,"param1":0,"param2":0,"param3":0,"param4":0},{"kind":1,"id":90,"sortNumber":1721802225,"param1":350003,"param2":0,"param3":0,"param4":0},{"kind":1,"id":44,"sortNumber":1721802455,"param1":11404,"param2":3,"param3":138,"param4":0},{"kind":1,"id":24,"sortNumber":1721802881,"param1":11311,"param2":2,"param3":130,"param4":0},{"kind":1,"id":20,"sortNumber":1721901889,"param1":11207,"param2":3,"param3":139,"param4":0},{"kind":1,"id":44,"sortNumber":1721902107,"param1":11529,"param2":3,"param3":141,"param4":0},{"kind":1,"id":10,"sortNumber":1722270262,"param1":0,"param2":0,"param3":0,"param4":0},{"kind":1,"id":90,"sortNumber":1722270276,"param1":400005,"param2":0,"param3":0,"param4":0}],"musicList":[{"kind":2,"id":562,"sortNumber":1721737582,"param1":0,"param2":0,"param3":0,"param4":0},{"kind":2,"id":11404,"sortNumber":1721802455,"param1":0,"param2":0,"param3":0,"param4":0},{"kind":2,"id":548,"sortNumber":1721802684,"param1":0,"param2":0,"param3":0,"param4":0},{"kind":2,"id":11311,"sortNumber":1721802881,"param1":0,"param2":0,"param3":0,"param4":0},{"kind":2,"id":833,"sortNumber":1721803091,"param1":0,"param2":0,"param3":0,"param4":0},{"kind":2,"id":11025,"sortNumber":1721901468,"param1":0,"param2":0,"param3":0,"param4":0},{"kind":2,"id":496,"sortNumber":1721901669,"param1":0,"param2":0,"param3":0,"param4":0},{"kind":2,"id":11207,"sortNumber":1721901889,"param1":0,"param2":0,"param3":0,"param4":0},{"kind":2,"id":11529,"sortNumber":1721902107,"param1":0,"param2":0,"param3":0,"param4":0},{"kind":2,"id":803,"sortNumber":1722270407,"param1":0,"param2":0,"param3":0,"param4":0}]}],"userGamePlaylogList":[{"playlogId":7397094407213678836,"version":"1.41.00","playDate":"2024-07-30 00:27:17.0","playMode":0,"useTicketId":-1,"playCredit":1,"playTrack":1,"clientId":"A63E01E1216","isPlayTutorial":false,"isEventMode":false,"isNewFree":false,"playCount":90,"playSpecial":1334722030,"playOtherUserId":0}],"user2pPlaylog":{"userId1":0,"userId2":0,"userName1":"","userName2":"","regionId":0,"placeId":0,"user2pPlaylogDetailList":[]},"isNewCharacterList":"","isNewMapList":"000000000101111","isNewLoginBonusList":"0","isNewItemList":"","isNewMusicDetailList":"1","isNewCourseList":"","isNewFavoriteList":"","isNewFriendSeasonRankingList":"1"}}
2 |
--------------------------------------------------------------------------------