karin-plugin-teamspeak 1.5.3 → 1.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/apps/ts3.d.ts CHANGED
@@ -2,13 +2,16 @@ import { TeamSpeak } from "ts3-nodejs-library";
2
2
  declare class ts3 {
3
3
  teamspeak: undefined | TeamSpeak;
4
4
  connectTimer: number;
5
+ private isReConnecting;
5
6
  init: () => Promise<void>;
6
7
  getAllChannelList: () => Promise<string | undefined>;
7
8
  quitTs: () => Promise<void>;
8
9
  reconnectTs: () => Promise<void>;
10
+ private handelReconnect;
9
11
  }
10
12
  declare const teamspeak3: ts3;
11
13
  export declare const getAllUserList: () => Promise<{
14
+ name: string;
12
15
  res: {
13
16
  [name: string]: {
14
17
  nickName: string;
package/lib/apps/ts3.js CHANGED
@@ -9,10 +9,11 @@ let disNotifyNameList = [];
9
9
  class ts3 {
10
10
  teamspeak;
11
11
  connectTimer = 0;
12
+ isReConnecting = false;
12
13
  //初始化 如果已经有连接了就关闭连接重新连接
13
14
  init = async () => {
14
15
  const TS = config();
15
- //fix ReferenceError: Cannot access 'config' before initialization
16
+ this.isReConnecting = false;
16
17
  disNotifyNameList = [TS.NICKNAME, ...TS.DIS_NOTIFY_NAME_LIST];
17
18
  logger.info(loggerHex(" ===== ts3 ===== ") + "开始连接ts3服务器...");
18
19
  if (this.teamspeak) {
@@ -34,31 +35,11 @@ class ts3 {
34
35
  });
35
36
  _teamspeak.on("close", (e) => {
36
37
  logger.error(loggerHex(" ===== ts3 ===== ") + "ts3连接断开", e);
37
- if (this.teamspeak) {
38
- logger.info(loggerHex(" ===== ts3 ===== ") + "重连中...");
39
- this.teamspeak
40
- .reconnect(TS.RECONNECT_TIMER, 1000)
41
- .catch((e) => {
42
- logger.error(loggerHex(" ===== ts3 ===== ") + "连接TS3失败", e);
43
- })
44
- .then(() => {
45
- logger.info(loggerHex(" ===== ts3 ===== ") + "重连成功");
46
- });
47
- }
38
+ this.handelReconnect();
48
39
  });
49
40
  _teamspeak.on("error", (err) => {
50
41
  logger.error(loggerHex(" ===== ts3 ===== ") + "ts3连接出错", err);
51
- if (this.teamspeak) {
52
- logger.info(loggerHex(" ===== ts3 ===== ") + "重连中...");
53
- this.teamspeak
54
- .reconnect(TS.RECONNECT_TIMER, 1000)
55
- .catch((e) => {
56
- logger.error(loggerHex(" ===== ts3 ===== ") + "连接TS3失败", e);
57
- })
58
- .then(() => {
59
- logger.info(loggerHex(" ===== ts3 ===== ") + "重连成功");
60
- });
61
- }
42
+ this.handelReconnect();
62
43
  });
63
44
  _teamspeak.on("clientconnect", (e) => {
64
45
  if (!disNotifyNameList.includes(e.client.nickname)) {
@@ -152,6 +133,24 @@ class ts3 {
152
133
  this.teamspeak.reconnect(config().RECONNECT_TIMER, 1000);
153
134
  }
154
135
  };
136
+ //重连逻辑
137
+ async handelReconnect() {
138
+ const TS = config();
139
+ if (!this.teamspeak || this.isReConnecting)
140
+ return;
141
+ this.isReConnecting = true;
142
+ logger.info(loggerHex(" ===== ts3 ===== ") + "重连中...");
143
+ try {
144
+ await this.teamspeak.reconnect(TS.RECONNECT_TIMER, 1000);
145
+ logger.info(loggerHex(" ===== ts3 ===== ") + "重连成功");
146
+ }
147
+ catch (e) {
148
+ logger.error(loggerHex(" ===== ts3 ===== ") + "连接TS3失败", e);
149
+ }
150
+ finally {
151
+ this.isReConnecting = false;
152
+ }
153
+ }
155
154
  }
156
155
  const teamspeak3 = new ts3();
157
156
  setTimeout(() => {
@@ -163,7 +162,9 @@ export const getAllUserList = async () => {
163
162
  if (teamspeak3.teamspeak) {
164
163
  let count = 0;
165
164
  const res = {};
166
- const channelList = await teamspeak3.teamspeak.channelList(); //所有频道
165
+ const channelList = await teamspeak3.teamspeak.channelList().catch(() => {
166
+ return [];
167
+ }); //所有频道
167
168
  for (let index = 0; index < channelList.length; index++) {
168
169
  const channel = channelList[index]; //频道
169
170
  const allClient = await channel.getClients(); //在当前频道的人
@@ -183,6 +184,7 @@ export const getAllUserList = async () => {
183
184
  });
184
185
  }
185
186
  return {
187
+ name: config().SERVER_NAME || config().HOST,
186
188
  res,
187
189
  count,
188
190
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "karin-plugin-teamspeak",
3
- "version": "1.5.3",
3
+ "version": "1.5.5",
4
4
  "description": "karin 的 teamspeak 插件",
5
5
  "homepage": "https://github.com/jacksixth/karin-plugin-teamspeak3",
6
6
  "bugs": {