feat: ServerRkeyWrapper

This commit is contained in:
手瓜一十雪
2024-05-10 23:40:07 +08:00
parent 0435409870
commit c0a5ac2ac5
2 changed files with 60 additions and 1 deletions

View File

@@ -86,7 +86,8 @@ export class NapCatOnebot11 {
// console.log('ob11 onRecvMsg', JSON.stringify(msg, null, 2));
logDebug('收到消息', msg);
for (const m of msg) {
if (this.bootTime > parseInt(m.msgTime)) {
// try: 减掉3s 试图修复消息半天收不到
if (this.bootTime - 3> parseInt(m.msgTime)) {
logDebug(`消息时间${m.msgTime}早于启动时间${this.bootTime},忽略上报`);
continue;
}

58
src/onebot11/rkey.ts Normal file
View File

@@ -0,0 +1,58 @@
//远端rkey获取
class ServerRkeyWrapper {
serverUrl: string = "";
GroupRkey: string = "";
PrivateRkey: string = "";
expired_time: number = 0;
async Init(ServerUrl: string) {
this.serverUrl = ServerUrl;
}
async GetGroupRkey(): Promise<string> {
if (await this.IsRkeyExpired()) {
await this.RefreshRkey();
}
return this.GroupRkey;
}
async GetPrivateRkey(): Promise<string> {
if (await this.IsRkeyExpired()) {
await this.RefreshRkey();
}
return this.PrivateRkey;
}
async IsRkeyExpired(): Promise<boolean> {
return new Promise((resolve, reject) => {
let now = new Date().getTime();
if (now > this.expired_time || this.expired_time == 0) {
resolve(true);
} else {
resolve(false);
}
reject("error");
});
}
async RefreshRkey(): Promise<any> {
//刷新rkey
let data = await this.Internal_RefreshRkey();
this.GroupRkey = data.group_rkey;
this.PrivateRkey = data.private_rkey;
this.expired_time = data.expired_time;
}
async Internal_RefreshRkey(): Promise<any> {
return new Promise((resolve, reject) => {
fetch(this.serverUrl)
.then(response => {
if (!response.ok) {
reject(response.statusText); // 请求失败,返回错误信息
}
return response.json(); // 解析 JSON 格式的响应体
})
.then(data => {
resolve(data);
})
.catch(error => {
reject(error);
});
});
}
}
export const serverRkey = new ServerRkeyWrapper();