mioki 0.0.0-snapshot.0 → 0.1.0-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.node-version +1 -0
- package/dist/index.cjs +25 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +5 -0
- package/dist/index.d.mts +5 -0
- package/dist/index.mjs +25 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +37 -8
- package/src/index.ts +40 -0
- package/src/logger.ts +16 -0
- package/tsconfig.json +1 -26
- package/tsdown.config.ts +12 -0
- package/bun.lock +0 -20
- package/index.js +0 -1
- package/index.ts +0 -195
- package/readme.md +0 -2
package/.node-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
24.11.1
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
let napcat_sdk = require("napcat-sdk");
|
|
2
|
+
|
|
3
|
+
//#region src/index.ts
|
|
4
|
+
async function test() {
|
|
5
|
+
const napcat = new napcat_sdk.NapCat({ token: "cdc93b212524c0c0a0a162f1edec347a" });
|
|
6
|
+
napcat.on("ws.open", async () => {
|
|
7
|
+
console.log("ws opened");
|
|
8
|
+
const group = await napcat.pickGroup(608391254);
|
|
9
|
+
console.log("group info:", group);
|
|
10
|
+
const friend = await napcat.pickFriend(1141284758);
|
|
11
|
+
console.log("friend info:", friend);
|
|
12
|
+
});
|
|
13
|
+
napcat.on("message.group", async (e) => {
|
|
14
|
+
console.log("[message]", JSON.stringify(e));
|
|
15
|
+
if (e.raw_message === "ping") return await e.reply("pong", true);
|
|
16
|
+
if (e.raw_message === "reaction") return e.addReaction("66");
|
|
17
|
+
if (e.raw_message === "recall") return await e.recall();
|
|
18
|
+
if (e.raw_message === "hi") await e.reply(napcat.segment.face(14));
|
|
19
|
+
});
|
|
20
|
+
await napcat.bootstrap();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
exports.test = test;
|
|
25
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["NapCat"],"sources":["../src/index.ts"],"sourcesContent":["// import process from 'node:process'\nimport { NapCat } from 'napcat-sdk'\n\nexport async function test() {\n const napcat = new NapCat({\n // token for local ws test, it's safe to expose in public\n token: 'cdc93b212524c0c0a0a162f1edec347a',\n })\n\n napcat.on('ws.open', async () => {\n console.log('ws opened')\n const group = await napcat.pickGroup(608391254)\n console.log('group info:', group)\n\n const friend = await napcat.pickFriend(1141284758)\n console.log('friend info:', friend)\n })\n\n napcat.on('message.group', async (e) => {\n console.log('[message]', JSON.stringify(e))\n\n if (e.raw_message === 'ping') {\n return await e.reply('pong', true)\n }\n\n if (e.raw_message === 'reaction') {\n return e.addReaction('66')\n }\n\n if (e.raw_message === 'recall') {\n return await e.recall()\n }\n\n if (e.raw_message === 'hi') {\n await e.reply(napcat.segment.face(14))\n }\n })\n\n await napcat.bootstrap()\n}\n"],"mappings":";;;AAGA,eAAsB,OAAO;CAC3B,MAAM,SAAS,IAAIA,kBAAO,EAExB,OAAO,oCACR,CAAC;AAEF,QAAO,GAAG,WAAW,YAAY;AAC/B,UAAQ,IAAI,YAAY;EACxB,MAAM,QAAQ,MAAM,OAAO,UAAU,UAAU;AAC/C,UAAQ,IAAI,eAAe,MAAM;EAEjC,MAAM,SAAS,MAAM,OAAO,WAAW,WAAW;AAClD,UAAQ,IAAI,gBAAgB,OAAO;GACnC;AAEF,QAAO,GAAG,iBAAiB,OAAO,MAAM;AACtC,UAAQ,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;AAE3C,MAAI,EAAE,gBAAgB,OACpB,QAAO,MAAM,EAAE,MAAM,QAAQ,KAAK;AAGpC,MAAI,EAAE,gBAAgB,WACpB,QAAO,EAAE,YAAY,KAAK;AAG5B,MAAI,EAAE,gBAAgB,SACpB,QAAO,MAAM,EAAE,QAAQ;AAGzB,MAAI,EAAE,gBAAgB,KACpB,OAAM,EAAE,MAAM,OAAO,QAAQ,KAAK,GAAG,CAAC;GAExC;AAEF,OAAM,OAAO,WAAW"}
|
package/dist/index.d.cts
ADDED
package/dist/index.d.mts
ADDED
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { NapCat } from "napcat-sdk";
|
|
2
|
+
|
|
3
|
+
//#region src/index.ts
|
|
4
|
+
async function test() {
|
|
5
|
+
const napcat = new NapCat({ token: "cdc93b212524c0c0a0a162f1edec347a" });
|
|
6
|
+
napcat.on("ws.open", async () => {
|
|
7
|
+
console.log("ws opened");
|
|
8
|
+
const group = await napcat.pickGroup(608391254);
|
|
9
|
+
console.log("group info:", group);
|
|
10
|
+
const friend = await napcat.pickFriend(1141284758);
|
|
11
|
+
console.log("friend info:", friend);
|
|
12
|
+
});
|
|
13
|
+
napcat.on("message.group", async (e) => {
|
|
14
|
+
console.log("[message]", JSON.stringify(e));
|
|
15
|
+
if (e.raw_message === "ping") return await e.reply("pong", true);
|
|
16
|
+
if (e.raw_message === "reaction") return e.addReaction("66");
|
|
17
|
+
if (e.raw_message === "recall") return await e.recall();
|
|
18
|
+
if (e.raw_message === "hi") await e.reply(napcat.segment.face(14));
|
|
19
|
+
});
|
|
20
|
+
await napcat.bootstrap();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
export { test };
|
|
25
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/index.ts"],"sourcesContent":["// import process from 'node:process'\nimport { NapCat } from 'napcat-sdk'\n\nexport async function test() {\n const napcat = new NapCat({\n // token for local ws test, it's safe to expose in public\n token: 'cdc93b212524c0c0a0a162f1edec347a',\n })\n\n napcat.on('ws.open', async () => {\n console.log('ws opened')\n const group = await napcat.pickGroup(608391254)\n console.log('group info:', group)\n\n const friend = await napcat.pickFriend(1141284758)\n console.log('friend info:', friend)\n })\n\n napcat.on('message.group', async (e) => {\n console.log('[message]', JSON.stringify(e))\n\n if (e.raw_message === 'ping') {\n return await e.reply('pong', true)\n }\n\n if (e.raw_message === 'reaction') {\n return e.addReaction('66')\n }\n\n if (e.raw_message === 'recall') {\n return await e.recall()\n }\n\n if (e.raw_message === 'hi') {\n await e.reply(napcat.segment.face(14))\n }\n })\n\n await napcat.bootstrap()\n}\n"],"mappings":";;;AAGA,eAAsB,OAAO;CAC3B,MAAM,SAAS,IAAI,OAAO,EAExB,OAAO,oCACR,CAAC;AAEF,QAAO,GAAG,WAAW,YAAY;AAC/B,UAAQ,IAAI,YAAY;EACxB,MAAM,QAAQ,MAAM,OAAO,UAAU,UAAU;AAC/C,UAAQ,IAAI,eAAe,MAAM;EAEjC,MAAM,SAAS,MAAM,OAAO,WAAW,WAAW;AAClD,UAAQ,IAAI,gBAAgB,OAAO;GACnC;AAEF,QAAO,GAAG,iBAAiB,OAAO,MAAM;AACtC,UAAQ,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;AAE3C,MAAI,EAAE,gBAAgB,OACpB,QAAO,MAAM,EAAE,MAAM,QAAQ,KAAK;AAGpC,MAAI,EAAE,gBAAgB,WACpB,QAAO,EAAE,YAAY,KAAK;AAG5B,MAAI,EAAE,gBAAgB,SACpB,QAAO,MAAM,EAAE,QAAQ;AAGzB,MAAI,EAAE,gBAAgB,KACpB,OAAM,EAAE,MAAM,OAAO,QAAQ,KAAK,GAAG,CAAC;GAExC;AAEF,OAAM,OAAO,WAAW"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,40 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mioki",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
5
|
-
"description": "
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
4
|
+
"version": "0.1.0-beta.8",
|
|
5
|
+
"description": "A simple NapCat OneBot v11 framework.",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"onebot",
|
|
8
|
+
"onebot v11",
|
|
9
|
+
"framework",
|
|
10
|
+
"bot"
|
|
11
|
+
],
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "git+https://github.com/vikiboss/mioki.git",
|
|
15
|
+
"directory": "packages/mioki"
|
|
16
|
+
},
|
|
17
|
+
"exports": {
|
|
18
|
+
".": {
|
|
19
|
+
"require": "./dist/index.cjs",
|
|
20
|
+
"import": "./dist/index.mjs",
|
|
21
|
+
"types": "./dist/index.d.ts"
|
|
22
|
+
},
|
|
23
|
+
"./package.json": "./package.json"
|
|
24
|
+
},
|
|
25
|
+
"author": "Viki <hi@viki.moe> (https://github.com/vikiboss)",
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"pino": "^10.1.0",
|
|
29
|
+
"pino-pretty": "^13.1.3",
|
|
30
|
+
"napcat-sdk": "0.1.0-beta.8"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"tsdown": "^0.18.0",
|
|
34
|
+
"typescript": "^5.9.3"
|
|
35
|
+
},
|
|
36
|
+
"scripts": {
|
|
37
|
+
"dev": "tsdown -w",
|
|
38
|
+
"build": "tsdown"
|
|
39
|
+
}
|
|
40
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// import process from 'node:process'
|
|
2
|
+
import { NapCat } from 'napcat-sdk'
|
|
3
|
+
|
|
4
|
+
export async function test() {
|
|
5
|
+
const napcat = new NapCat({
|
|
6
|
+
// token for local ws test, it's safe to expose in public
|
|
7
|
+
token: 'cdc93b212524c0c0a0a162f1edec347a',
|
|
8
|
+
})
|
|
9
|
+
|
|
10
|
+
napcat.on('ws.open', async () => {
|
|
11
|
+
console.log('ws opened')
|
|
12
|
+
const group = await napcat.pickGroup(608391254)
|
|
13
|
+
console.log('group info:', group)
|
|
14
|
+
|
|
15
|
+
const friend = await napcat.pickFriend(1141284758)
|
|
16
|
+
console.log('friend info:', friend)
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
napcat.on('message.group', async (e) => {
|
|
20
|
+
console.log('[message]', JSON.stringify(e))
|
|
21
|
+
|
|
22
|
+
if (e.raw_message === 'ping') {
|
|
23
|
+
return await e.reply('pong', true)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (e.raw_message === 'reaction') {
|
|
27
|
+
return e.addReaction('66')
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (e.raw_message === 'recall') {
|
|
31
|
+
return await e.recall()
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (e.raw_message === 'hi') {
|
|
35
|
+
await e.reply(napcat.segment.face(14))
|
|
36
|
+
}
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
await napcat.bootstrap()
|
|
40
|
+
}
|
package/src/logger.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import createPino from 'pino'
|
|
2
|
+
|
|
3
|
+
import type { Logger } from 'napcat-sdk'
|
|
4
|
+
|
|
5
|
+
const pino = createPino({
|
|
6
|
+
// level: 'trace',
|
|
7
|
+
name: 'mioki',
|
|
8
|
+
transport: {
|
|
9
|
+
target: 'pino-pretty',
|
|
10
|
+
options: {
|
|
11
|
+
colorize: true,
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
export const MIOKI_LOGGER: Logger = pino
|
package/tsconfig.json
CHANGED
|
@@ -1,28 +1,3 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
// Environment setup & latest features
|
|
4
|
-
"lib": ["ESNext"],
|
|
5
|
-
"target": "ESNext",
|
|
6
|
-
"module": "ESNext",
|
|
7
|
-
"moduleDetection": "force",
|
|
8
|
-
"jsx": "react-jsx",
|
|
9
|
-
"allowJs": true,
|
|
10
|
-
|
|
11
|
-
// Bundler mode
|
|
12
|
-
"moduleResolution": "bundler",
|
|
13
|
-
"allowImportingTsExtensions": true,
|
|
14
|
-
"verbatimModuleSyntax": true,
|
|
15
|
-
"noEmit": true,
|
|
16
|
-
|
|
17
|
-
// Best practices
|
|
18
|
-
"strict": true,
|
|
19
|
-
"skipLibCheck": true,
|
|
20
|
-
"noFallthroughCasesInSwitch": true,
|
|
21
|
-
"noUncheckedIndexedAccess": true,
|
|
22
|
-
|
|
23
|
-
// Some stricter flags (disabled by default)
|
|
24
|
-
"noUnusedLocals": false,
|
|
25
|
-
"noUnusedParameters": false,
|
|
26
|
-
"noPropertyAccessFromIndexSignature": false
|
|
27
|
-
}
|
|
2
|
+
"extends": "../../tsconfig.json"
|
|
28
3
|
}
|
package/tsdown.config.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { defineConfig } from 'tsdown'
|
|
2
|
+
|
|
3
|
+
export default defineConfig({
|
|
4
|
+
entry: ['./src/index.ts'],
|
|
5
|
+
dts: true,
|
|
6
|
+
sourcemap: true,
|
|
7
|
+
target: 'node24',
|
|
8
|
+
treeshake: true,
|
|
9
|
+
tsconfig: './tsconfig.json',
|
|
10
|
+
format: ['cjs', 'esm'],
|
|
11
|
+
failOnWarn: false,
|
|
12
|
+
})
|
package/bun.lock
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"lockfileVersion": 1,
|
|
3
|
-
"workspaces": {
|
|
4
|
-
"": {
|
|
5
|
-
"name": "scm-task",
|
|
6
|
-
"devDependencies": {
|
|
7
|
-
"@types/bun": "latest",
|
|
8
|
-
},
|
|
9
|
-
},
|
|
10
|
-
},
|
|
11
|
-
"packages": {
|
|
12
|
-
"@types/bun": ["@types/bun@1.3.3", "", { "dependencies": { "bun-types": "1.3.3" } }, "sha512-ogrKbJ2X5N0kWLLFKeytG0eHDleBYtngtlbu9cyBKFtNL3cnpDZkNdQj8flVf6WTZUX5ulI9AY1oa7ljhSrp+g=="],
|
|
13
|
-
|
|
14
|
-
"@types/node": ["@types/node@24.10.1", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ=="],
|
|
15
|
-
|
|
16
|
-
"bun-types": ["bun-types@1.3.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-z3Xwlg7j2l9JY27x5Qn3Wlyos8YAp0kKRlrePAOjgjMGS5IG6E7Jnlx736vH9UVI4wUICwwhC9anYL++XeOgTQ=="],
|
|
17
|
-
|
|
18
|
-
"undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
|
|
19
|
-
}
|
|
20
|
-
}
|
package/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const name = 'mioki'
|
package/index.ts
DELETED
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env -S node --no-warnings
|
|
2
|
-
|
|
3
|
-
const ulpToken = process.env.ULP_TOKEN || process.argv[2]
|
|
4
|
-
|
|
5
|
-
const UA =
|
|
6
|
-
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36'
|
|
7
|
-
const UAWeWork =
|
|
8
|
-
'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 wxwork/4.1.38 MicroMessenger/7.0.1 Language/zh ColorScheme/Light wwmver/3.26.38.377'
|
|
9
|
-
|
|
10
|
-
async function main() {
|
|
11
|
-
const list = await getArticleList()
|
|
12
|
-
const [a1, a2] = randItems(list, 2)
|
|
13
|
-
|
|
14
|
-
if (!a1 || !a2) {
|
|
15
|
-
throw new Error('没有获取到足够的文章')
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
await doSignin()
|
|
19
|
-
await wait(300)
|
|
20
|
-
|
|
21
|
-
await doLike(a1)
|
|
22
|
-
await wait(300)
|
|
23
|
-
await doComment(a1)
|
|
24
|
-
await wait(300)
|
|
25
|
-
await doShare(a1)
|
|
26
|
-
await wait(300)
|
|
27
|
-
|
|
28
|
-
await doLike(a2)
|
|
29
|
-
await wait(300)
|
|
30
|
-
await doComment(a2)
|
|
31
|
-
await wait(300)
|
|
32
|
-
await doShare(a2)
|
|
33
|
-
|
|
34
|
-
debug('任务结束')
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
main()
|
|
38
|
-
|
|
39
|
-
interface Article {
|
|
40
|
-
id: string
|
|
41
|
-
title: string
|
|
42
|
-
dirId: string
|
|
43
|
-
orderId: string
|
|
44
|
-
teamId: string
|
|
45
|
-
updateTime: string
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
async function getArticleList(options?: {
|
|
49
|
-
page?: number
|
|
50
|
-
pageSize?: number
|
|
51
|
-
teamType?: string
|
|
52
|
-
}): Promise<Article[]> {
|
|
53
|
-
const { page = 2, pageSize = 10, teamType = 1 } = options ?? {}
|
|
54
|
-
const response = await fetch('https://sheingroup.net/be-scm/api/scmArticle/findNewsByTeam', {
|
|
55
|
-
headers: {
|
|
56
|
-
'content-type': 'application/json',
|
|
57
|
-
cookie: `ulp-token=${ulpToken}`,
|
|
58
|
-
'User-Agent': UA,
|
|
59
|
-
Referer: 'https://sheingroup.net/portal/scm/informationPage',
|
|
60
|
-
},
|
|
61
|
-
method: 'POST',
|
|
62
|
-
body: JSON.stringify({ pageIndex: page, pageSize, teamType }),
|
|
63
|
-
})
|
|
64
|
-
|
|
65
|
-
const data = (await response.json()) as any
|
|
66
|
-
|
|
67
|
-
if (+data.code !== 0) {
|
|
68
|
-
throw new Error(`Error fetching article list: ${JSON.stringify(data)}`)
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return (
|
|
72
|
-
data?.info?.records?.map((item: any) => ({
|
|
73
|
-
id: item?.id ?? '',
|
|
74
|
-
title: item?.scmArticleTitle ?? '',
|
|
75
|
-
dirId: item?.scmDirId ?? '',
|
|
76
|
-
orderId: item?.scmOrderId ?? '',
|
|
77
|
-
teamId: item?.scmTeamId ?? '',
|
|
78
|
-
updateTime: new Date(item?.updateTime ?? '').toLocaleString('zh-CN'),
|
|
79
|
-
})) ?? []
|
|
80
|
-
)
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
export async function doSignin() {
|
|
84
|
-
const response = await fetch('https://sheingroup.net/be-scm/ggp/user/signin/checkInNow', {
|
|
85
|
-
headers: {
|
|
86
|
-
'Content-Type': 'application/json',
|
|
87
|
-
'User-Agent': UA,
|
|
88
|
-
Cookie: `ulp-token=${ulpToken}`,
|
|
89
|
-
Referer: 'https://sheingroup.net/portal/scm/interact',
|
|
90
|
-
},
|
|
91
|
-
method: 'POST',
|
|
92
|
-
})
|
|
93
|
-
|
|
94
|
-
debug('签到:', await response.text())
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
export async function doLike(article: Article) {
|
|
98
|
-
const hasLike =
|
|
99
|
-
((await (await fetch('https://sheingroup.net/be-scm/api/scmLike/checkAOE')).json()) as any)
|
|
100
|
-
?.info === true
|
|
101
|
-
|
|
102
|
-
debug(`文章 ${article.id} 是否点过赞: ${hasLike}`)
|
|
103
|
-
|
|
104
|
-
if (hasLike) {
|
|
105
|
-
await fetch('https://sheingroup.net/be-scm/api/scmLike/cancelAOE', {
|
|
106
|
-
headers: {
|
|
107
|
-
'content-type': 'application/json',
|
|
108
|
-
Cookie: `ulp-token=${ulpToken}`,
|
|
109
|
-
'User-Agent': UA,
|
|
110
|
-
Referer: `https://sheingroup.net/portal/scm/articleDetails?articleId=${article.id}&teamId=${article.teamId}`,
|
|
111
|
-
},
|
|
112
|
-
body: JSON.stringify({ scmRelateId: article.id, scmRelateType: 1 }),
|
|
113
|
-
method: 'POST',
|
|
114
|
-
})
|
|
115
|
-
|
|
116
|
-
debug(`取消点赞: ${article.id}`)
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
const response = await fetch('https://sheingroup.net/be-scm/api/scmLike/saveAOE', {
|
|
120
|
-
headers: {
|
|
121
|
-
'content-type': 'application/json',
|
|
122
|
-
Cookie: `ulp-token=${ulpToken}`,
|
|
123
|
-
'User-Agent': UA,
|
|
124
|
-
Referer: `https://sheingroup.net/portal/scm/articleDetails?articleId=${article.id}&teamId=${article.teamId}`,
|
|
125
|
-
},
|
|
126
|
-
body: JSON.stringify({ scmRelateId: article.id, scmRelateType: 1 }),
|
|
127
|
-
method: 'POST',
|
|
128
|
-
})
|
|
129
|
-
|
|
130
|
-
debug(`点赞文章: ${article.id}`, await response.text())
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
export async function doComment(article: Article, content: string = '点赞') {
|
|
134
|
-
const response = await fetch('https://sheingroup.net/be-scm/api/common/scmComment/comment', {
|
|
135
|
-
headers: {
|
|
136
|
-
'content-type': 'application/json',
|
|
137
|
-
cookie: `ulp-token=${ulpToken}`,
|
|
138
|
-
'User-Agent': UA,
|
|
139
|
-
Referer: `https://sheingroup.net/portal/scm/articleDetails?articleId=${article.id}&teamId=${article.teamId}`,
|
|
140
|
-
},
|
|
141
|
-
body: JSON.stringify({
|
|
142
|
-
scmContent: '点赞',
|
|
143
|
-
scmUserId: '10049738',
|
|
144
|
-
scmRelateType: 1,
|
|
145
|
-
scmRelateId: article.id,
|
|
146
|
-
}),
|
|
147
|
-
method: 'POST',
|
|
148
|
-
})
|
|
149
|
-
|
|
150
|
-
debug(`评论文章: ${article.id}, 内容: ${content}`, await response.text())
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
export async function doShare(article: Article) {
|
|
154
|
-
const response = await fetch(
|
|
155
|
-
`https://scm.sheincorp.cn/api/scmArticle/share?orderId=${article.orderId}`,
|
|
156
|
-
{
|
|
157
|
-
headers: {
|
|
158
|
-
'Content-Type': 'application/json',
|
|
159
|
-
'User-Agent': UAWeWork,
|
|
160
|
-
Referer: `https://scm.sheincorp.cn/m/articleDetail?articleId=${article.id}&dirId=${article.dirId}&teamId=${article.teamId}&redirectFrom=pc`,
|
|
161
|
-
Cookie: `ulp-token=${ulpToken}`,
|
|
162
|
-
},
|
|
163
|
-
method: 'POST',
|
|
164
|
-
}
|
|
165
|
-
)
|
|
166
|
-
|
|
167
|
-
debug(`分享文章: ${article.id}`, await response.text())
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
function debug(...args: any[]) {
|
|
171
|
-
console.debug(`[${new Date().toLocaleString('zh-CN')}]`, ...args)
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
export function randItem<T>(items: T[]): T {
|
|
175
|
-
if (!items || items.length === 0) {
|
|
176
|
-
throw new Error('No items to choose from')
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
return items[Math.floor(Math.random() * items.length)] as T
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
export function randItems<T>(items: T[], len = 2): T[] {
|
|
183
|
-
if (!items || items.length <= len) {
|
|
184
|
-
throw new Error('No items to choose from or not enough items')
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
return items
|
|
188
|
-
.slice()
|
|
189
|
-
.sort(() => Math.random() - 0.5)
|
|
190
|
-
.slice(0, len) as T[]
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
export async function wait(ms: number): Promise<void> {
|
|
194
|
-
return new Promise(resolve => setTimeout(resolve, ms))
|
|
195
|
-
}
|
package/readme.md
DELETED