ddbot.js-0374 2.1.2 → 3.0.0
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/README.md +5 -5
- package/docs/documentation.md +4 -4
- package/docs/examples/chat.js +1 -1
- package/docs/examples/echo-bot.js +2 -2
- package/package.json +2 -2
- package/src/bot/bot.js +21 -11
package/README.md
CHANGED
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
Окей...
|
|
34
34
|
Сейчас я вам разкажу как работает bot/BotManager.
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
teeworlds
|
|
37
37
|
#### Базовые методы
|
|
38
38
|
У нас есть :
|
|
39
39
|
1. bot.createBot()
|
|
@@ -70,7 +70,7 @@ neiky-ddracebot.js
|
|
|
70
70
|
- Массив имен всех активных ботов
|
|
71
71
|
10. bot.getBotClient()
|
|
72
72
|
1. Принимает уникальное имя бота.
|
|
73
|
-
- Возвращает клиент
|
|
73
|
+
- Возвращает клиент teeworlds (ну изза того что я перепутал пакеты на самом деле там teeworlds пакет)
|
|
74
74
|
11. bot.removeBot()
|
|
75
75
|
Удаляет бота полностью.
|
|
76
76
|
1. Принимает уникальное имя бота.
|
|
@@ -78,10 +78,10 @@ neiky-ddracebot.js
|
|
|
78
78
|
12. bot.getBot()
|
|
79
79
|
1. Принимает уникальное имя бота.
|
|
80
80
|
- Возвращает прокси-объект бота.
|
|
81
|
-
13. bot.(
|
|
82
|
-
Заставляет ивенты работать. Изпользуеться в bot.createBot() чтобы вы могли делать все проще и вам не нужно было получать оригинальный клиент
|
|
81
|
+
13. bot._setupBotEvents()
|
|
82
|
+
Заставляет ивенты работать. Изпользуеться в bot.createBot() чтобы вы могли делать все проще и вам не нужно было получать оригинальный клиент teeworlds
|
|
83
83
|
1. Принимает уникальное имя бота.
|
|
84
|
-
2. Принимает клиент
|
|
84
|
+
2. Принимает клиент teeworlds
|
|
85
85
|
Ничего не возвращает.
|
|
86
86
|
14. bot.getPlayerList()
|
|
87
87
|
1. Принимает уникальное имя бота.
|
package/docs/documentation.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Окей...
|
|
3
3
|
Сейчас я вам разкажу как работает bot/BotManager.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
teeworlds
|
|
6
6
|
## Базовые методы
|
|
7
7
|
У нас есть :
|
|
8
8
|
1. bot.createBot()
|
|
@@ -39,7 +39,7 @@ neiky-ddracebot.js
|
|
|
39
39
|
- Массив имен всех активных ботов
|
|
40
40
|
10. bot.getBotClient()
|
|
41
41
|
1. Принимает уникальное имя бота.
|
|
42
|
-
- Возвращает клиент
|
|
42
|
+
- Возвращает клиент teeworlds
|
|
43
43
|
11. bot.removeBot()
|
|
44
44
|
Удаляет бота полностью.
|
|
45
45
|
1. Принимает уникальное имя бота.
|
|
@@ -48,9 +48,9 @@ neiky-ddracebot.js
|
|
|
48
48
|
1. Принимает уникальное имя бота.
|
|
49
49
|
- Возвращает прокси-объект бота.
|
|
50
50
|
13. bot.(Тут нижнее подчеркивание, я не могу поставить из-за обсидиана, он ломается)setupBotEvents()
|
|
51
|
-
Заставляет ивенты работать. Изпользуеться в bot.createBot() чтобы вы могли делать все проще и вам не нужно было получать оригинальный клиент
|
|
51
|
+
Заставляет ивенты работать. Изпользуеться в bot.createBot() чтобы вы могли делать все проще и вам не нужно было получать оригинальный клиент teeworlds
|
|
52
52
|
1. Принимает уникальное имя бота.
|
|
53
|
-
2. Принимает клиент
|
|
53
|
+
2. Принимает клиент teeworlds
|
|
54
54
|
Ничего не возвращает.
|
|
55
55
|
14. bot.getPlayerList()
|
|
56
56
|
1. Принимает уникальное имя бота.
|
package/docs/examples/chat.js
CHANGED
|
@@ -44,7 +44,7 @@ async function main() {
|
|
|
44
44
|
|
|
45
45
|
bot.connectBot(botName); // подкюлчаем
|
|
46
46
|
|
|
47
|
-
const botClient = bot.getBotClient(botName); // получаем оригинальный клиент
|
|
47
|
+
const botClient = bot.getBotClient(botName); // получаем оригинальный клиент teeworlds
|
|
48
48
|
|
|
49
49
|
// Подписка на событие подключения
|
|
50
50
|
bot.on(`${botName}:connect`, () => {
|
|
@@ -29,7 +29,7 @@ async function main() {
|
|
|
29
29
|
|
|
30
30
|
bot.connectBot(botName); // подкюлчаем
|
|
31
31
|
|
|
32
|
-
const botClient = bot.getBotClient(botName); // получаем оригинальный клиент
|
|
32
|
+
const botClient = bot.getBotClient(botName); // получаем оригинальный клиент teeworlds
|
|
33
33
|
|
|
34
34
|
// Подписка на событие подключения
|
|
35
35
|
bot.on(`${botName}:connect`, () => {
|
|
@@ -48,7 +48,7 @@ async function main() {
|
|
|
48
48
|
if (Date.now() - timemsg > 6000) {
|
|
49
49
|
timemsg = Date.now(); // устанавливаем текущее время
|
|
50
50
|
if (text && autormsg) {
|
|
51
|
-
botClient.game.Say(`${autormsg}: ${text}`); // отправка сообения (
|
|
51
|
+
botClient.game.Say(`${autormsg}: ${text}`); // отправка сообения (teeworlds)
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
});
|
package/package.json
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"dependencies": {
|
|
3
3
|
"chalk": "^4.1.2",
|
|
4
4
|
"loger0374": "^0.0.2",
|
|
5
|
-
"
|
|
5
|
+
"teeworlds": "^2.5.8"
|
|
6
6
|
},
|
|
7
7
|
"name": "ddbot.js-0374",
|
|
8
|
-
"version": "
|
|
8
|
+
"version": "3.0.0",
|
|
9
9
|
"description": "ddbot.js — это Node.js проект для автоматизации и управления ботами, а также работы с картами и логами.",
|
|
10
10
|
"main": "./index.js",
|
|
11
11
|
"scripts": {
|
package/src/bot/bot.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
// 0374flop MIT
|
|
2
|
+
|
|
1
3
|
"use strict";
|
|
2
|
-
const
|
|
4
|
+
const teeworlds = require('teeworlds');
|
|
3
5
|
const EventEmitter = require('events');
|
|
4
6
|
const DebugLogger = require('Loger0374');
|
|
5
7
|
const logDebuger = new DebugLogger('BotManager', false, true, null, true);
|
|
@@ -14,9 +16,15 @@ function random(min, max) {
|
|
|
14
16
|
class BotManager extends EventEmitter {
|
|
15
17
|
/**
|
|
16
18
|
* Конструктор класса BotManager
|
|
19
|
+
* @param {Object|null} teeWorlds - Опциональный объект Teeworlds для использования вместо стандартного
|
|
17
20
|
*/
|
|
18
|
-
constructor() {
|
|
21
|
+
constructor(teeWorlds = null) {
|
|
19
22
|
super();
|
|
23
|
+
if (typeof teeWorlds === Object) {
|
|
24
|
+
this.TW = teeWorlds;
|
|
25
|
+
} else {
|
|
26
|
+
this.TW = teeworlds;
|
|
27
|
+
}
|
|
20
28
|
this.activeBots = new Map();
|
|
21
29
|
this.botCounter = 0;
|
|
22
30
|
this.botFreezeStates = new Map(); // Хранит состояние заморозки для каждого бота
|
|
@@ -66,7 +74,7 @@ class BotManager extends EventEmitter {
|
|
|
66
74
|
const serverPort = port; // порт
|
|
67
75
|
|
|
68
76
|
if (!serverIp || !serverPort) {
|
|
69
|
-
throw new Error('
|
|
77
|
+
throw new Error('Invalid server address or port'+': '+fulladdress+'\n, ip: '+serverIp+', port: '+serverPort);
|
|
70
78
|
}
|
|
71
79
|
|
|
72
80
|
const uniqueBotName = this.generateUniqueBotName(botName);
|
|
@@ -80,8 +88,10 @@ class BotManager extends EventEmitter {
|
|
|
80
88
|
country: 0
|
|
81
89
|
};
|
|
82
90
|
logDebug('creating bot client');
|
|
91
|
+
|
|
92
|
+
let TW = this.TW; // teeworlds
|
|
83
93
|
// то самое место откуда создаеться клинт бота
|
|
84
|
-
const client = new
|
|
94
|
+
const client = new TW.Client(serverIp, serverPort, botName, { // изпользуем имя без уникального суффикса чтобы было одно имя.
|
|
85
95
|
identity: identity // то самое индентити для скина и тд
|
|
86
96
|
});
|
|
87
97
|
|
|
@@ -121,7 +131,7 @@ class BotManager extends EventEmitter {
|
|
|
121
131
|
return false; // бот не найден
|
|
122
132
|
}
|
|
123
133
|
try {
|
|
124
|
-
botInfo.client.
|
|
134
|
+
botInfo.client.connect(); // то самое место подключения
|
|
125
135
|
return true; // да
|
|
126
136
|
} catch (error) { // фак
|
|
127
137
|
logDebug(error);
|
|
@@ -184,7 +194,7 @@ class BotManager extends EventEmitter {
|
|
|
184
194
|
* @returns {boolean} - true если бот подключен, иначе false
|
|
185
195
|
*/
|
|
186
196
|
isBotConnected(botName) {
|
|
187
|
-
const botInfo = getBotInfo(botName); // получаем инфу о боте
|
|
197
|
+
const botInfo = this.getBotInfo(botName); // получаем инфу о боте
|
|
188
198
|
return botInfo ? botInfo.isConnected : false; // подключен? да или нет
|
|
189
199
|
}
|
|
190
200
|
|
|
@@ -301,8 +311,8 @@ class BotManager extends EventEmitter {
|
|
|
301
311
|
clearInterval(chatinterval);
|
|
302
312
|
});
|
|
303
313
|
|
|
304
|
-
client.on('
|
|
305
|
-
const botInfo = this.
|
|
314
|
+
client.on('connected', () => { // Шок контент бот зашел на сервер
|
|
315
|
+
const botInfo = this.getBotInfo(botName); // получаем инфу о боте
|
|
306
316
|
if (!botInfo) {
|
|
307
317
|
return; // бот не найден фак
|
|
308
318
|
} else {
|
|
@@ -315,7 +325,7 @@ class BotManager extends EventEmitter {
|
|
|
315
325
|
|
|
316
326
|
client.on('disconnect', (reason) => { // бот отключился от сервера
|
|
317
327
|
if (!reason) return; // На всякий случай, потому что если специально отключаеться то может не быть
|
|
318
|
-
let botInfo = this.
|
|
328
|
+
let botInfo = this.getBotInfo(botName); // получаем инфу о боте
|
|
319
329
|
if (!botInfo) {
|
|
320
330
|
return; // бот не найден фак
|
|
321
331
|
} else {
|
|
@@ -352,7 +362,7 @@ class BotManager extends EventEmitter {
|
|
|
352
362
|
this.emit(`${botName}:disconnected`, reason, reconnectTime);
|
|
353
363
|
logDebug(`${botName} disconnected due to: `, reason, '\nand reconnecting in ', reconnectTime, 'ms');
|
|
354
364
|
setTimeout(() => {
|
|
355
|
-
client.
|
|
365
|
+
client.connect();
|
|
356
366
|
this.emit(`${botName}:reconnect`, reconnectTime);
|
|
357
367
|
logDebug(`${botName} reconnect now`);
|
|
358
368
|
}, reconnectTime);
|
|
@@ -410,7 +420,7 @@ class BotManager extends EventEmitter {
|
|
|
410
420
|
chatinterval = setInterval(() => {
|
|
411
421
|
s.clear();
|
|
412
422
|
}, 1000); // чистка
|
|
413
|
-
client.on('
|
|
423
|
+
client.on('message', (msg) => {
|
|
414
424
|
this.emit(`${botName}:message`, msg); // Сырое сообщение, без фильтрации
|
|
415
425
|
|
|
416
426
|
const msgraw = msg; // ориг для чата на всякий
|