mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-07-19 12:03:37 +00:00
feat: ServerRkeyWrapper
This commit is contained in:
@@ -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
58
src/onebot11/rkey.ts
Normal 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();
|
Reference in New Issue
Block a user