Commit 4052affc authored by nanahira's avatar nanahira

support consumer message

parent 0e892e04
......@@ -101,4 +101,11 @@ app.command('survey', '卡片调查').action(async ({ session }) => {
}
});
app.command('link').action(() => '<a href="https://koishi.chat">Koishi</a>');
app.command('wait <time:posint>').action(async (argv, time) => {
await new Promise((resolve) => setTimeout(resolve, time * 1000));
return `等待了 ${time} 秒`;
});
app.start();
......@@ -14,7 +14,7 @@
"form-data": "^4.0.0",
"koa-wechat-public": "^0.1.13",
"koa-xml-body": "^2.2.0",
"koishi-thirdeye": "^11.1.21",
"koishi-thirdeye": "^11.1.24",
"mime2ext": "^1.0.1"
},
"devDependencies": {
......@@ -39,7 +39,7 @@
"ws": "^8.11.0"
},
"peerDependencies": {
"koishi": "^4.11.1"
"koishi": "^4.11.6"
}
},
"node_modules/@ampproject/remapping": {
......@@ -1212,23 +1212,23 @@
}
},
"node_modules/@koishijs/core": {
"version": "4.11.1",
"resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.11.1.tgz",
"integrity": "sha512-HrzgBnimg/fgIzxTyH8BJb7nZpgt912i4zcfvRN9kNcPwbdOpjGllCVRuhRxSEBR21OJvCYTmT0dzf1qNPd3Vg==",
"version": "4.11.6",
"resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.11.6.tgz",
"integrity": "sha512-7Ky1q+9wPSACk5T5Oi+UjWQIQfwgZao/QnHmZjK7NaW+17NSG6MBRvu9davcayMKrs9HVcnP0kaqvS2n9z7+bA==",
"peer": true,
"dependencies": {
"@koishijs/utils": "^6.4.0",
"@minatojs/core": "^2.1.1",
"@satorijs/core": "^2.0.1",
"cordis": "^2.6.0",
"@koishijs/utils": "^7.0.0",
"@minatojs/core": "^2.2.2",
"@satorijs/core": "^2.1.2",
"cordis": "^2.7.2",
"cosmokit": "^1.4.0",
"fastest-levenshtein": "^1.0.16"
}
},
"node_modules/@koishijs/loader": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@koishijs/loader/-/loader-2.5.1.tgz",
"integrity": "sha512-ZNyzmL/sCTENPegZBx5rPs1mb+7YOxCb9Il0vyul9zuGzSJoJklSAIoTpBRt1v6BH/eUHEwY6ngcomkxQlf6xQ==",
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@koishijs/loader/-/loader-2.5.6.tgz",
"integrity": "sha512-2LswjTMsfqO0TCZpRs69ZbRI3RHh97/9KSitFFhplO++ZkKuqFHUwVnmFi7AbgtobybUZ+2llGtvO1cNZL13Kw==",
"peer": true,
"dependencies": {
"dotenv": "^16.0.3",
......@@ -1236,7 +1236,7 @@
"ns-require": "^1.1.4"
},
"peerDependencies": {
"@koishijs/core": "^4.11.1"
"@koishijs/core": "4.11.6"
}
},
"node_modules/@koishijs/plugin-help": {
......@@ -1249,21 +1249,19 @@
}
},
"node_modules/@koishijs/utils": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/@koishijs/utils/-/utils-6.4.0.tgz",
"integrity": "sha512-GMIBnr4W6JZST5hB8u1sVH3+MH7ZcGIUy3IJU538Z4j/JbCoRnydNnCKggs7tB1JFHqq/7eHAsks/2WrfA/1ng==",
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@koishijs/utils/-/utils-7.0.0.tgz",
"integrity": "sha512-xfz6aoLoCVoX+OiVsy3mpiXPS7hUPiEaTVnPqHpELu9At8Hb2yhexDSBUWmWLvZ70jmJOUNUtCTbkDd+I0S2Ig==",
"peer": true,
"dependencies": {
"cosmokit": "^1.4.0",
"inaba": "^1.1.1",
"reggol": "^1.3.4",
"schemastery": "^3.6.1"
"inaba": "^1.1.1"
}
},
"node_modules/@minatojs/core": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@minatojs/core/-/core-2.1.1.tgz",
"integrity": "sha512-iGx1eydevDiuhaUhO/BkI0L2d+028wsVUMZ/pXi1z5IP1xZJvlr3LMrjr3zG4XdyKPO3JsdZy96G+wQSu6Jltg==",
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/@minatojs/core/-/core-2.2.2.tgz",
"integrity": "sha512-bZJ58RGtZ1LSw6zsAGoejvhAfgyhPhgrBmaNbTtAam3z+8XsJtR3dU4iWEa7cV6BcWfKTyTHNBAJM+9MvkZ4mg==",
"dependencies": {
"cosmokit": "^1.4.0"
}
......@@ -1304,37 +1302,37 @@
}
},
"node_modules/@satorijs/core": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@satorijs/core/-/core-2.0.1.tgz",
"integrity": "sha512-K+nNmUtFrU1uDJEn6Xov6TcaKhn8+Q9qtp6iBUh5DIhHO4hzoIHaPntvpoKJ5dfg5EyQyAi+JShTGl4voN5Ung==",
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/@satorijs/core/-/core-2.1.3.tgz",
"integrity": "sha512-YTX4VohtHl8kHEZmQDWzxGTI0+m5fDPTu8czBeztlTQofqouW6tUtP5h1TRJC7JqvjN/+Du6o0ilyIgIcl0Snw==",
"peer": true,
"dependencies": {
"@satorijs/element": "^2.3.1",
"cordis": "^2.6.0",
"cordis-axios": "^2.2.1",
"@satorijs/element": "^2.3.2",
"cordis": "^2.7.2",
"cordis-axios": "^3.0.0",
"cosmokit": "^1.4.0",
"reggol": "^1.3.4",
"schemastery": "^3.6.1",
"reggol": "^1.3.5",
"schemastery": "^3.7.0",
"ws": "^8.11.0"
}
},
"node_modules/@satorijs/element": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/@satorijs/element/-/element-2.3.1.tgz",
"integrity": "sha512-p1hQVy56nfJ2dw1noEHkV7hKpC9yqe5u3Vla+CSPqXU12uB4zqv96rjT9n4WulNGl8XTzqWxp8q8KWqhSI8JFA==",
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/@satorijs/element/-/element-2.3.2.tgz",
"integrity": "sha512-XOA5/2NGFjlD7Vb/qqkesqFY3PdP7Xvbg72MspSodYbSQVJoPSPuQooa9EWB8GBkxGPDA1y8GRQoL0jlLqcm2w==",
"peer": true,
"dependencies": {
"cosmokit": "^1.4.0"
}
},
"node_modules/@satorijs/satori": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@satorijs/satori/-/satori-2.0.1.tgz",
"integrity": "sha512-Mt8r8rYr7IOWgCKMTfyXaIvZIFQ2FAUXsDlOMnhWu6Sf/Q0KFS/o/aiXFlerhSnii1ptuGAZmSxaBhsGMkPmwg==",
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/@satorijs/satori/-/satori-2.1.3.tgz",
"integrity": "sha512-7gd4q/ACRrBvCyTvODvxgf/iKxNpDg9BJy3PtbmB4dMDRixISUPmqOLVV1B1Q8XBVrtTWAuEivpOucgw7BZ8qQ==",
"peer": true,
"dependencies": {
"@koa/router": "^10.1.1",
"@satorijs/core": "2.0.1",
"@satorijs/core": "2.1.3",
"@types/koa": "*",
"@types/koa__router": "*",
"@types/ws": "^8.5.3",
......@@ -1346,7 +1344,6 @@
"koa-bodyparser": "^4.3.0",
"parseurl": "^1.3.3",
"path-to-regexp": "^6.2.1",
"schemastery": "^3.6.1",
"socks-proxy-agent": "^5.0.1",
"ws": "^8.11.0"
},
......@@ -2823,9 +2820,9 @@
}
},
"node_modules/content-type": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
"peer": true,
"engines": {
"node": ">= 0.6"
......@@ -2866,36 +2863,35 @@
"peer": true
},
"node_modules/cordis": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/cordis/-/cordis-2.6.0.tgz",
"integrity": "sha512-4VUY2x6ufctBr1zYAML3c+b1eXwgY94nkqLP7/icb3QVGXMBJuH4Nztakf6ADVonN5MvgJ06RRawRvmWdx3LxA==",
"version": "2.7.2",
"resolved": "https://registry.npmjs.org/cordis/-/cordis-2.7.2.tgz",
"integrity": "sha512-bM+4P1bhIawrXRLvBMoxfWwSHebm0B3n0sM+T/FCED/iMUnEs6N9Y7lwJ2gDo2fm0wvu4JzU8cuMKrxqroq16Q==",
"peer": true,
"dependencies": {
"cosmokit": "^1.3.3"
"cosmokit": "^1.4.0"
}
},
"node_modules/cordis-axios": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/cordis-axios/-/cordis-axios-2.2.1.tgz",
"integrity": "sha512-1OBl1FKLkYa1kEYeX56E13B4VdrxUve4poEYBfsBAygYn0IvcrUauvsdW9cl1rihBXtA/X6/K8BUY9O5KyOSQg==",
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/cordis-axios/-/cordis-axios-3.0.0.tgz",
"integrity": "sha512-fYFw6vezgDP9n8GMCHUW+n8hPkWueX0RpGipu5lU/aRDwNzeGQaYdSv737cRh/N7cPsGqZqGJcZUgYBPzxrB7A==",
"peer": true,
"dependencies": {
"axios": "~1.1.3",
"cosmokit": "^1.4.0",
"mime-db": "^1.52.0",
"schemastery": "^3.6.1"
"mime-db": "^1.52.0"
},
"engines": {
"node": ">=12.0.0"
},
"peerDependencies": {
"cordis": "^2.6.0"
"cordis": "^2.7.2"
}
},
"node_modules/cordis-decorators": {
"version": "1.0.24",
"resolved": "https://registry.npmjs.org/cordis-decorators/-/cordis-decorators-1.0.24.tgz",
"integrity": "sha512-yXD2Z0cRYTHQBh788mIADbhA7X2dV/WQfiC/4xcTrsF4R4A0ZoCQlt1AULKaGBAwD80VgNrc14Ok3SmKSRJmcQ==",
"version": "1.0.26",
"resolved": "https://registry.npmjs.org/cordis-decorators/-/cordis-decorators-1.0.26.tgz",
"integrity": "sha512-f57gwXkTgduBXL6uwEzT1kkSQLP5eNZleQrK0hGJ+9TwwF3sbh8WQUI0NDgQcTXblV5/aCvGvHCovALKc7i2KA==",
"dependencies": {
"mustache": "^4.2.0",
"reflect-metadata": "^0.1.13",
......@@ -2904,7 +2900,7 @@
"typed-reflector": "^1.0.11"
},
"peerDependencies": {
"cordis": "^2.6.0",
"cordis": "^2.7.2",
"schemastery": "^3.5.1"
}
},
......@@ -3704,9 +3700,9 @@
}
},
"node_modules/get-intrinsic": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
"integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
"integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
"peer": true,
"dependencies": {
"function-bind": "^1.1.1",
......@@ -5021,15 +5017,15 @@
}
},
"node_modules/koishi": {
"version": "4.11.1",
"resolved": "https://registry.npmjs.org/koishi/-/koishi-4.11.1.tgz",
"integrity": "sha512-sHMa8okx+kl5jHBwzT2gb4qGeOJRKG8AfLt4w5BLJwOPpvdo6cW9RiRy1uBwkXM7zf4yOvtr0+6WEu+AuD6bXQ==",
"version": "4.11.6",
"resolved": "https://registry.npmjs.org/koishi/-/koishi-4.11.6.tgz",
"integrity": "sha512-XvsBmdVXHIzgU2v3IFe4wJakzqpKBH/dZtYCScDkq13zn/pLamI88rMxs7BYUd131lyJndzxa6jMwFVMvtYyUA==",
"peer": true,
"dependencies": {
"@koishijs/core": "4.11.1",
"@koishijs/loader": "^2.5.1",
"@koishijs/utils": "^6.4.0",
"@satorijs/satori": "^2.0.1",
"@koishijs/core": "4.11.6",
"@koishijs/loader": "2.5.6",
"@koishijs/utils": "^7.0.0",
"@satorijs/satori": "^2.1.2",
"cac": "^6.7.14",
"chokidar": "^3.5.3",
"kleur": "^4.1.5",
......@@ -5044,18 +5040,18 @@
}
},
"node_modules/koishi-thirdeye": {
"version": "11.1.21",
"resolved": "https://registry.npmjs.org/koishi-thirdeye/-/koishi-thirdeye-11.1.21.tgz",
"integrity": "sha512-7IiKSCcqPsxSaoK+00k+8R7CcoJA8l2kDZsTDCM7pEtsGFFZGkbeLuRHd0Py4L5KNzO4teMHwBFLfGyaFIktUQ==",
"version": "11.1.24",
"resolved": "https://registry.npmjs.org/koishi-thirdeye/-/koishi-thirdeye-11.1.24.tgz",
"integrity": "sha512-+EYcHxw5khQr8f0sI0ykadoWAUrCR67Ca0ZelZHjN6EQ4O/i2x+dXoOQFAmNsXmf2MEYebT+ceyZKcqh2v38LA==",
"dependencies": {
"@types/koa": "^2.13.5",
"@types/koa__router": "^12.0.0",
"cordis-decorators": "^1.0.24",
"cordis-decorators": "^1.0.26",
"minato-decorators": "^2.2.2",
"rxjs": "^7.5.6"
},
"peerDependencies": {
"koishi": "^4.11.1"
"koishi": "^4.11.6"
}
},
"node_modules/leven": {
......@@ -5363,9 +5359,9 @@
"peer": true
},
"node_modules/object-inspect": {
"version": "1.12.2",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
"integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
"version": "1.12.3",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
"integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
"peer": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
......@@ -5942,12 +5938,12 @@
}
},
"node_modules/reggol": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/reggol/-/reggol-1.3.4.tgz",
"integrity": "sha512-E/sL4WovP0kR5EHQx3YF4ZDsI5D5baTROXaELCN1mOCB8tEOVOR3PHr807yVcGit2BfmXMSW5KyRaUAV5K8Vzw==",
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/reggol/-/reggol-1.3.5.tgz",
"integrity": "sha512-kzkzs4nhZeiphyh+amekq25/3PndZDq+5Yt8qCJqPSyMXPC1pkwhfYCQyJdXxoRz3/uqt0+VqHulagUCVY84vA==",
"peer": true,
"dependencies": {
"cosmokit": "^1.3.6",
"cosmokit": "^1.4.0",
"object-inspect": "^1.12.2",
"supports-color": "^8.1.1"
}
......@@ -6121,12 +6117,12 @@
}
},
"node_modules/schemastery": {
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/schemastery/-/schemastery-3.6.1.tgz",
"integrity": "sha512-Igh4oqaHco1AYmqpSgYgg411gNomSI9xE35Xo/FuzJZTMYWA5W1o+82Q5qMnt9FAQ76gZig0pea9OcHl0AM/Lw==",
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/schemastery/-/schemastery-3.7.0.tgz",
"integrity": "sha512-vUs5HcWdtpqlL/Z1AwvFApllJk0jLtuItkwH5DDpie3Lw71DIA0Z7ohlnPF+fVN17QxJAI5xJtud62E3/EBoBQ==",
"peer": true,
"dependencies": {
"cosmokit": "^1.3.4"
"cosmokit": "^1.4.0"
}
},
"node_modules/schemastery-gen": {
......@@ -6738,9 +6734,9 @@
}
},
"node_modules/tslib": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
"integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
"integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
},
"node_modules/tsscmp": {
"version": "1.0.6",
......@@ -8185,23 +8181,23 @@
}
},
"@koishijs/core": {
"version": "4.11.1",
"resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.11.1.tgz",
"integrity": "sha512-HrzgBnimg/fgIzxTyH8BJb7nZpgt912i4zcfvRN9kNcPwbdOpjGllCVRuhRxSEBR21OJvCYTmT0dzf1qNPd3Vg==",
"version": "4.11.6",
"resolved": "https://registry.npmjs.org/@koishijs/core/-/core-4.11.6.tgz",
"integrity": "sha512-7Ky1q+9wPSACk5T5Oi+UjWQIQfwgZao/QnHmZjK7NaW+17NSG6MBRvu9davcayMKrs9HVcnP0kaqvS2n9z7+bA==",
"peer": true,
"requires": {
"@koishijs/utils": "^6.4.0",
"@minatojs/core": "^2.1.1",
"@satorijs/core": "^2.0.1",
"cordis": "^2.6.0",
"@koishijs/utils": "^7.0.0",
"@minatojs/core": "^2.2.2",
"@satorijs/core": "^2.1.2",
"cordis": "^2.7.2",
"cosmokit": "^1.4.0",
"fastest-levenshtein": "^1.0.16"
}
},
"@koishijs/loader": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/@koishijs/loader/-/loader-2.5.1.tgz",
"integrity": "sha512-ZNyzmL/sCTENPegZBx5rPs1mb+7YOxCb9Il0vyul9zuGzSJoJklSAIoTpBRt1v6BH/eUHEwY6ngcomkxQlf6xQ==",
"version": "2.5.6",
"resolved": "https://registry.npmjs.org/@koishijs/loader/-/loader-2.5.6.tgz",
"integrity": "sha512-2LswjTMsfqO0TCZpRs69ZbRI3RHh97/9KSitFFhplO++ZkKuqFHUwVnmFi7AbgtobybUZ+2llGtvO1cNZL13Kw==",
"peer": true,
"requires": {
"dotenv": "^16.0.3",
......@@ -8217,21 +8213,19 @@
"requires": {}
},
"@koishijs/utils": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/@koishijs/utils/-/utils-6.4.0.tgz",
"integrity": "sha512-GMIBnr4W6JZST5hB8u1sVH3+MH7ZcGIUy3IJU538Z4j/JbCoRnydNnCKggs7tB1JFHqq/7eHAsks/2WrfA/1ng==",
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/@koishijs/utils/-/utils-7.0.0.tgz",
"integrity": "sha512-xfz6aoLoCVoX+OiVsy3mpiXPS7hUPiEaTVnPqHpELu9At8Hb2yhexDSBUWmWLvZ70jmJOUNUtCTbkDd+I0S2Ig==",
"peer": true,
"requires": {
"cosmokit": "^1.4.0",
"inaba": "^1.1.1",
"reggol": "^1.3.4",
"schemastery": "^3.6.1"
"inaba": "^1.1.1"
}
},
"@minatojs/core": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@minatojs/core/-/core-2.1.1.tgz",
"integrity": "sha512-iGx1eydevDiuhaUhO/BkI0L2d+028wsVUMZ/pXi1z5IP1xZJvlr3LMrjr3zG4XdyKPO3JsdZy96G+wQSu6Jltg==",
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/@minatojs/core/-/core-2.2.2.tgz",
"integrity": "sha512-bZJ58RGtZ1LSw6zsAGoejvhAfgyhPhgrBmaNbTtAam3z+8XsJtR3dU4iWEa7cV6BcWfKTyTHNBAJM+9MvkZ4mg==",
"requires": {
"cosmokit": "^1.4.0"
}
......@@ -8263,37 +8257,37 @@
}
},
"@satorijs/core": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@satorijs/core/-/core-2.0.1.tgz",
"integrity": "sha512-K+nNmUtFrU1uDJEn6Xov6TcaKhn8+Q9qtp6iBUh5DIhHO4hzoIHaPntvpoKJ5dfg5EyQyAi+JShTGl4voN5Ung==",
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/@satorijs/core/-/core-2.1.3.tgz",
"integrity": "sha512-YTX4VohtHl8kHEZmQDWzxGTI0+m5fDPTu8czBeztlTQofqouW6tUtP5h1TRJC7JqvjN/+Du6o0ilyIgIcl0Snw==",
"peer": true,
"requires": {
"@satorijs/element": "^2.3.1",
"cordis": "^2.6.0",
"cordis-axios": "^2.2.1",
"@satorijs/element": "^2.3.2",
"cordis": "^2.7.2",
"cordis-axios": "^3.0.0",
"cosmokit": "^1.4.0",
"reggol": "^1.3.4",
"schemastery": "^3.6.1",
"reggol": "^1.3.5",
"schemastery": "^3.7.0",
"ws": "^8.11.0"
}
},
"@satorijs/element": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/@satorijs/element/-/element-2.3.1.tgz",
"integrity": "sha512-p1hQVy56nfJ2dw1noEHkV7hKpC9yqe5u3Vla+CSPqXU12uB4zqv96rjT9n4WulNGl8XTzqWxp8q8KWqhSI8JFA==",
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/@satorijs/element/-/element-2.3.2.tgz",
"integrity": "sha512-XOA5/2NGFjlD7Vb/qqkesqFY3PdP7Xvbg72MspSodYbSQVJoPSPuQooa9EWB8GBkxGPDA1y8GRQoL0jlLqcm2w==",
"peer": true,
"requires": {
"cosmokit": "^1.4.0"
}
},
"@satorijs/satori": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@satorijs/satori/-/satori-2.0.1.tgz",
"integrity": "sha512-Mt8r8rYr7IOWgCKMTfyXaIvZIFQ2FAUXsDlOMnhWu6Sf/Q0KFS/o/aiXFlerhSnii1ptuGAZmSxaBhsGMkPmwg==",
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/@satorijs/satori/-/satori-2.1.3.tgz",
"integrity": "sha512-7gd4q/ACRrBvCyTvODvxgf/iKxNpDg9BJy3PtbmB4dMDRixISUPmqOLVV1B1Q8XBVrtTWAuEivpOucgw7BZ8qQ==",
"peer": true,
"requires": {
"@koa/router": "^10.1.1",
"@satorijs/core": "2.0.1",
"@satorijs/core": "2.1.3",
"@types/koa": "*",
"@types/koa__router": "*",
"@types/ws": "^8.5.3",
......@@ -8305,7 +8299,6 @@
"koa-bodyparser": "^4.3.0",
"parseurl": "^1.3.3",
"path-to-regexp": "^6.2.1",
"schemastery": "^3.6.1",
"socks-proxy-agent": "^5.0.1",
"ws": "^8.11.0"
},
......@@ -9477,9 +9470,9 @@
}
},
"content-type": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
"peer": true
},
"convert-source-map": {
......@@ -9513,30 +9506,29 @@
"peer": true
},
"cordis": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/cordis/-/cordis-2.6.0.tgz",
"integrity": "sha512-4VUY2x6ufctBr1zYAML3c+b1eXwgY94nkqLP7/icb3QVGXMBJuH4Nztakf6ADVonN5MvgJ06RRawRvmWdx3LxA==",
"version": "2.7.2",
"resolved": "https://registry.npmjs.org/cordis/-/cordis-2.7.2.tgz",
"integrity": "sha512-bM+4P1bhIawrXRLvBMoxfWwSHebm0B3n0sM+T/FCED/iMUnEs6N9Y7lwJ2gDo2fm0wvu4JzU8cuMKrxqroq16Q==",
"peer": true,
"requires": {
"cosmokit": "^1.3.3"
"cosmokit": "^1.4.0"
}
},
"cordis-axios": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/cordis-axios/-/cordis-axios-2.2.1.tgz",
"integrity": "sha512-1OBl1FKLkYa1kEYeX56E13B4VdrxUve4poEYBfsBAygYn0IvcrUauvsdW9cl1rihBXtA/X6/K8BUY9O5KyOSQg==",
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/cordis-axios/-/cordis-axios-3.0.0.tgz",
"integrity": "sha512-fYFw6vezgDP9n8GMCHUW+n8hPkWueX0RpGipu5lU/aRDwNzeGQaYdSv737cRh/N7cPsGqZqGJcZUgYBPzxrB7A==",
"peer": true,
"requires": {
"axios": "~1.1.3",
"cosmokit": "^1.4.0",
"mime-db": "^1.52.0",
"schemastery": "^3.6.1"
"mime-db": "^1.52.0"
}
},
"cordis-decorators": {
"version": "1.0.24",
"resolved": "https://registry.npmjs.org/cordis-decorators/-/cordis-decorators-1.0.24.tgz",
"integrity": "sha512-yXD2Z0cRYTHQBh788mIADbhA7X2dV/WQfiC/4xcTrsF4R4A0ZoCQlt1AULKaGBAwD80VgNrc14Ok3SmKSRJmcQ==",
"version": "1.0.26",
"resolved": "https://registry.npmjs.org/cordis-decorators/-/cordis-decorators-1.0.26.tgz",
"integrity": "sha512-f57gwXkTgduBXL6uwEzT1kkSQLP5eNZleQrK0hGJ+9TwwF3sbh8WQUI0NDgQcTXblV5/aCvGvHCovALKc7i2KA==",
"requires": {
"mustache": "^4.2.0",
"reflect-metadata": "^0.1.13",
......@@ -10125,9 +10117,9 @@
"dev": true
},
"get-intrinsic": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
"integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
"integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
"peer": true,
"requires": {
"function-bind": "^1.1.1",
......@@ -11116,15 +11108,15 @@
}
},
"koishi": {
"version": "4.11.1",
"resolved": "https://registry.npmjs.org/koishi/-/koishi-4.11.1.tgz",
"integrity": "sha512-sHMa8okx+kl5jHBwzT2gb4qGeOJRKG8AfLt4w5BLJwOPpvdo6cW9RiRy1uBwkXM7zf4yOvtr0+6WEu+AuD6bXQ==",
"version": "4.11.6",
"resolved": "https://registry.npmjs.org/koishi/-/koishi-4.11.6.tgz",
"integrity": "sha512-XvsBmdVXHIzgU2v3IFe4wJakzqpKBH/dZtYCScDkq13zn/pLamI88rMxs7BYUd131lyJndzxa6jMwFVMvtYyUA==",
"peer": true,
"requires": {
"@koishijs/core": "4.11.1",
"@koishijs/loader": "^2.5.1",
"@koishijs/utils": "^6.4.0",
"@satorijs/satori": "^2.0.1",
"@koishijs/core": "4.11.6",
"@koishijs/loader": "2.5.6",
"@koishijs/utils": "^7.0.0",
"@satorijs/satori": "^2.1.2",
"cac": "^6.7.14",
"chokidar": "^3.5.3",
"kleur": "^4.1.5",
......@@ -11133,13 +11125,13 @@
}
},
"koishi-thirdeye": {
"version": "11.1.21",
"resolved": "https://registry.npmjs.org/koishi-thirdeye/-/koishi-thirdeye-11.1.21.tgz",
"integrity": "sha512-7IiKSCcqPsxSaoK+00k+8R7CcoJA8l2kDZsTDCM7pEtsGFFZGkbeLuRHd0Py4L5KNzO4teMHwBFLfGyaFIktUQ==",
"version": "11.1.24",
"resolved": "https://registry.npmjs.org/koishi-thirdeye/-/koishi-thirdeye-11.1.24.tgz",
"integrity": "sha512-+EYcHxw5khQr8f0sI0ykadoWAUrCR67Ca0ZelZHjN6EQ4O/i2x+dXoOQFAmNsXmf2MEYebT+ceyZKcqh2v38LA==",
"requires": {
"@types/koa": "^2.13.5",
"@types/koa__router": "^12.0.0",
"cordis-decorators": "^1.0.24",
"cordis-decorators": "^1.0.26",
"minato-decorators": "^2.2.2",
"rxjs": "^7.5.6"
}
......@@ -11388,9 +11380,9 @@
"peer": true
},
"object-inspect": {
"version": "1.12.2",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
"integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
"version": "1.12.3",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
"integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
"peer": true
},
"on-finished": {
......@@ -11790,12 +11782,12 @@
"dev": true
},
"reggol": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/reggol/-/reggol-1.3.4.tgz",
"integrity": "sha512-E/sL4WovP0kR5EHQx3YF4ZDsI5D5baTROXaELCN1mOCB8tEOVOR3PHr807yVcGit2BfmXMSW5KyRaUAV5K8Vzw==",
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/reggol/-/reggol-1.3.5.tgz",
"integrity": "sha512-kzkzs4nhZeiphyh+amekq25/3PndZDq+5Yt8qCJqPSyMXPC1pkwhfYCQyJdXxoRz3/uqt0+VqHulagUCVY84vA==",
"peer": true,
"requires": {
"cosmokit": "^1.3.6",
"cosmokit": "^1.4.0",
"object-inspect": "^1.12.2",
"supports-color": "^8.1.1"
}
......@@ -11905,12 +11897,12 @@
}
},
"schemastery": {
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/schemastery/-/schemastery-3.6.1.tgz",
"integrity": "sha512-Igh4oqaHco1AYmqpSgYgg411gNomSI9xE35Xo/FuzJZTMYWA5W1o+82Q5qMnt9FAQ76gZig0pea9OcHl0AM/Lw==",
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/schemastery/-/schemastery-3.7.0.tgz",
"integrity": "sha512-vUs5HcWdtpqlL/Z1AwvFApllJk0jLtuItkwH5DDpie3Lw71DIA0Z7ohlnPF+fVN17QxJAI5xJtud62E3/EBoBQ==",
"peer": true,
"requires": {
"cosmokit": "^1.3.4"
"cosmokit": "^1.4.0"
}
},
"schemastery-gen": {
......@@ -12329,9 +12321,9 @@
}
},
"tslib": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz",
"integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
"integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
},
"tsscmp": {
"version": "1.0.6",
......
......@@ -49,11 +49,11 @@
"form-data": "^4.0.0",
"koa-wechat-public": "^0.1.13",
"koa-xml-body": "^2.2.0",
"koishi-thirdeye": "^11.1.21",
"koishi-thirdeye": "^11.1.24",
"mime2ext": "^1.0.1"
},
"peerDependencies": {
"koishi": "^4.11.1"
"koishi": "^4.11.6"
},
"devDependencies": {
"@koishijs/plugin-help": "^2.0.2",
......
......@@ -34,6 +34,7 @@ import path from 'path';
import { Readable } from 'stream';
import { WechatAdapter } from './adapter';
import XmlParser from 'koa-xml-body';
import { WechatConsumerMessenger } from './message';
export * from './config';
declare module 'koishi' {
......@@ -54,7 +55,7 @@ export default class WechatBot extends Bot<Partial<WechatOfficialConfig>> {
internal: WechatApplication;
private menuMap = new Map<string, string>();
@Inject()
private http: Quester;
http: Quester;
@InjectLogger()
private logger: Logger;
......@@ -130,7 +131,7 @@ export default class WechatBot extends Bot<Partial<WechatOfficialConfig>> {
}
}
private async uploadMedia(element: Element) {
async uploadMedia(element: Element) {
try {
const { type } = element;
const uploadType = type === 'audio' ? 'voice' : type;
......@@ -213,7 +214,7 @@ export default class WechatBot extends Bot<Partial<WechatOfficialConfig>> {
session.subtype = 'private';
session.author = { userId: acc.fromUser };
}
const reply = await session.process();
const reply = await session.process(4500);
if (reply?.length) {
await this.setReply(acc.send, segment.normalize(reply));
}
......@@ -280,14 +281,16 @@ export default class WechatBot extends Bot<Partial<WechatOfficialConfig>> {
guildId?: string,
options?: SendOptions,
): Promise<string[]> {
return [];
return this.sendPrivateMessage(channelId, content, options);
}
async sendPrivateMessage(
userId: string,
content: segment.Fragment,
options?: SendOptions,
): Promise<string[]> {
return [];
return new WechatConsumerMessenger(this, userId, undefined, options).send(
content,
);
}
async getMessage(
channelId: string,
......
import { Logger, Messenger, Random, segment } from 'koishi';
import WechatBot from './index';
interface ConsumerMessagePayload {
msgtype: 'text' | 'image' | 'voice' | 'video';
touser?: string;
text?: {
content: string;
};
image?: {
media_id: string;
};
voice?: {
media_id: string;
};
video?: {
media_id: string;
thumb_media_id?: string;
title: string;
description: string;
};
}
export class WechatConsumerMessenger extends Messenger<WechatBot> {
logger = new Logger('wechat-consumer-messenger');
async sendConsumer(payload: ConsumerMessagePayload) {
const token = await this.bot.internal.getAccessToken();
let success = false;
try {
const result = await this.bot.http.post<{
errcode: number;
errmsg: string;
}>(
'https://api.weixin.qq.com/cgi-bin/message/custom/send',
{
touser: this.channelId,
...payload,
},
{
params: {
access_token: token,
},
},
);
if (result.errcode > 0) {
this.logger.warn(
`Send consumer message failed: ${result.errcode} ${result.errmsg}`,
);
} else {
success = true;
}
} catch (e) {
this.logger.error(`Send consumer message errored: ${e.message}`);
}
if (success) {
const session = this.bot.session();
session.messageId = Random.id();
session.app.emit(session, 'send', session);
this.results.push(session);
}
}
private buffer = '';
async flush() {
const content = this.buffer.trim();
if (content) {
await this.sendConsumer({
msgtype: 'text',
text: {
content,
},
});
}
}
text(text: string) {
this.buffer += text;
}
async visit(element: segment) {
const { type, attrs, children } = element;
switch (type) {
case 'text':
this.text(attrs.content);
break;
case 'p':
await this.render(children);
this.text('\n');
break;
case 'a':
this.text(element.toString());
break;
case 'at':
if (attrs.id) {
this.text(`@${attrs.id}`);
} else if (attrs.type === 'all') {
this.text('@全体成员');
} else if (attrs.type === 'here') {
this.text('@在线成员');
} else if (attrs.role) {
this.text(`@${attrs.role}`);
}
break;
case 'sharp':
this.text(` #${attrs.name} `);
break;
case 'message':
await this.flush();
await this.render(children);
await this.flush();
break;
case 'image':
case 'voice':
case 'video':
await this.flush();
const mediaId = await this.bot.uploadMedia(element);
if (mediaId) {
await this.sendConsumer({
msgtype: type,
[type]: {
media_id: mediaId,
title: attrs.title,
description: attrs.description,
},
});
}
break;
default:
await this.render(children);
}
}
}
import { Element } from 'koishi';
const patternTypes = ['message', 'p', 'a'];
const patternTypes = ['message', 'p'];
export function getFirstElement(elements: Element[]): Element {
if (!elements.length) return;
......@@ -18,12 +18,11 @@ export function getPlainText(elements: Element[]) {
for (const element of elements) {
if (element.type === 'text') {
buffer += element.attrs.content;
} else if (element.type === 'a') {
buffer += element.toString();
} else if (patternTypes.includes(element.type)) {
buffer += getPlainText(element.children);
buffer += '\n';
if (element.type === 'a' && element.attrs.href) {
buffer += ` (${element.attrs.href})`;
}
} else if (element.type === 'at') {
if (element.attrs.id) {
buffer += `@${element.attrs.id}`;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment