From deeab036d352270427c014a59f3d5eaa93a0144e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?=
 <nanaeonn@outlook.com>
Date: Sun, 11 Aug 2024 23:05:42 +0800
Subject: [PATCH] chore: token

---
 src/onebot/main.ts                     |  2 +-
 src/onebot/network/active-websocket.ts | 13 +++++++++++--
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/onebot/main.ts b/src/onebot/main.ts
index 3833f60a..88a142f7 100644
--- a/src/onebot/main.ts
+++ b/src/onebot/main.ts
@@ -99,7 +99,7 @@ export class NapCatOneBot11Adapter {
         if (ob11Config.reverseWs.enable) {
             ob11Config.reverseWs.urls.forEach(url => {
                 this.networkManager.registerAdapter(new OB11ActiveWebSocketAdapter(
-                    url, 5000, ob11Config.heartInterval, this.core, this
+                    url, 5000, ob11Config.heartInterval, ob11Config.token, this.core, this
                 ));
             });
         }
diff --git a/src/onebot/network/active-websocket.ts b/src/onebot/network/active-websocket.ts
index 2ed2ebfc..34bc117e 100644
--- a/src/onebot/network/active-websocket.ts
+++ b/src/onebot/network/active-websocket.ts
@@ -16,9 +16,11 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter {
     private heartbeatTimer: NodeJS.Timeout | null = null;
     onebotContext: NapCatOneBot11Adapter;
     coreContext: NapCatCore;
+    token: string;
 
-    constructor(url: string, reconnectIntervalInMillis: number, heartbeatInterval: number, coreContext: NapCatCore, onebotContext: NapCatOneBot11Adapter) {
+    constructor(url: string, reconnectIntervalInMillis: number, heartbeatInterval: number, token:string, coreContext: NapCatCore, onebotContext: NapCatOneBot11Adapter) {
         this.url = url;
+        this.token = token;
         this.heartbeatInterval = heartbeatInterval;
         this.reconnectIntervalInMillis = reconnectIntervalInMillis;
         this.coreContext = coreContext;
@@ -72,7 +74,14 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter {
     private async tryConnect() {
         while (!this.connection && !this.isClosed) {
             try {
-                this.connection = new NodeWebSocket(this.url);
+                this.connection = new NodeWebSocket(this.url, {
+                    headers: {
+                        'X-Self-ID': this.coreContext.selfInfo.uin,
+                        'Authorization': `Bearer ${this.token}`,
+                        'x-client-role': 'Universal',  // koishi-adapter-onebot 需要这个字段
+                        'User-Agent': 'OneBot/11',
+                    }
+                });
                 this.connection.on('message', (data) => {
                     this.handleMessage(data);
                 });