市场里那几个太久没更新了好像不好用啊
是否和此贴的求插件相同?
是的哈
大佬有这个插件嘛
我没有
正因为没有所以楼主才会在「求插件」版块发帖的啊
很快就会有
给大佬点赞
给老大发电了20块
出来了说下也发个电
速通了一个,没发版,发现自己 new Router({prefix: string}) 的路由 use 添加后关闭插件不会自动移除,所以还是老老实实用了 ctx.router,所以显得那个 path 很冗长,不过验证方面已经实现好了,差个文档教别人怎么用
感谢!
目前代码已经写好了,不过我想再测试测试,估计下周末正式发布。到时候会有专门的介绍贴。
确实不会配置,全是ts我不太熟
还没搞完呢,能用的时候会放文档的
插件市场 @ahdg/api,这里贴一个最简单的请求实例(JS),根据你设置的加密方式里边的内容需要更改
const http = require('http');
const crypto = require('crypto');
const { randomUUID } = require('crypto');
const uid = 'ahdg';
const token = '1b745b88-1003-49ca-9a71-c98d4e393dba';
function generateSignature(timestamp, random) {
const data = `${timestamp}:${random}:${token}`;
const hmac = crypto.createHmac('sha256', token);
hmac.update(data);
return hmac.digest('hex');
}
function sendHttpRequest() {
const timestamp = new Date().getTime();
const random = randomUUID();
const sign = generateSignature(timestamp, random);
const postData = JSON.stringify({
channelId: "8385444041238345",
guildId: "4760305728296170",
content: "hello"
});
const options = {
hostname: '127.0.0.1', // Replace with the actual request address
port: 5140, // Replace with the actual port number
path: '/api/bots/kook:1368312480/message', // Replace with the actual API path
method: 'POST',
headers: {
'Content-Type': 'application/json',
'timestamp': timestamp,
'random': random,
'sign': sign,
'uid': uid,
'Content-Length': Buffer.byteLength(postData) // Set the content length
}
};
const req = http.request(options, (res) => {
console.log(`Status Code: ${res.statusCode}`);
res.setEncoding('utf8');
res.on('data', (chunk) => {
console.log(`Response: ${chunk}`);
});
});
req.on('error', (error) => {
console.error(`Error: ${error}`);
});
// Send the JSON data in the request body
req.write(postData);
req.end();
}
sendHttpRequest();
感谢大佬
顺便一提,模块化做的很好,api 本身作为服务也可以被别人调用来添加受保护的路由,而且如果设置了信息对称加密的话也会自动解码(是的,有很多人公网通过 HTTP 部署,对称加密请求体是可选项)
简单来说就是做了个自定义程度较高的加密验证和 Token 管理核心加一个发信息的小插件,昨天搞速通写的垃圾今天给整理发布
防重放攻击有两种,一个是时间戳,一个是随机数,可以设置时间容差但不能关闭该功能
注意,签名形式可以自定义,如果改了的话你需要在请求侧也改签名方式。还有如果打开了数据加密的选项,请务必查看系统自带的 openssl 支不支持你设置的加密算法 => 这玩意我没测试,但你数据发送端要主动加密,服务端目前只有解密功能
对于别的开发者,目前没提供任何将自己路由暴露在该 api 路径下的方法,但如果你想实现验证,可以 ctx.router.use(path , ctx.api.tokenValidationMiddleware)
别的没有了,主打的一个能用就行(
默认情况下路由是这样的,你可以自己设置路径
/api - 测试你的签名算法,可以 GET 到一个 Good!
以下路由只在配置开启时存在
/api/bots - 返回所有 koishi 注册的 bots
/api/bots/:sid - 返回指定 sid 的 bot 信息 (selfId, platform, status, username, userid, joinedGuilds)
/api/bots/:sid/message - 发送信息,看上边示例代码来改
老哥你这也太负责了
看不懂,但是大佬nb!
本条消息不由Nonebot赞助
太吊了