ddbot.js-0374 2.1.3 → 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 +4 -4
- 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 +15 -7
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. Принимает уникальное имя бота.
|
|
@@ -79,9 +79,9 @@ neiky-ddracebot.js
|
|
|
79
79
|
1. Принимает уникальное имя бота.
|
|
80
80
|
- Возвращает прокси-объект бота.
|
|
81
81
|
13. bot._setupBotEvents()
|
|
82
|
-
Заставляет ивенты работать. Изпользуеться в bot.createBot() чтобы вы могли делать все проще и вам не нужно было получать оригинальный клиент
|
|
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,7 +1,7 @@
|
|
|
1
1
|
// 0374flop MIT
|
|
2
2
|
|
|
3
3
|
"use strict";
|
|
4
|
-
const
|
|
4
|
+
const teeworlds = require('teeworlds');
|
|
5
5
|
const EventEmitter = require('events');
|
|
6
6
|
const DebugLogger = require('Loger0374');
|
|
7
7
|
const logDebuger = new DebugLogger('BotManager', false, true, null, true);
|
|
@@ -16,9 +16,15 @@ function random(min, max) {
|
|
|
16
16
|
class BotManager extends EventEmitter {
|
|
17
17
|
/**
|
|
18
18
|
* Конструктор класса BotManager
|
|
19
|
+
* @param {Object|null} teeWorlds - Опциональный объект Teeworlds для использования вместо стандартного
|
|
19
20
|
*/
|
|
20
|
-
constructor() {
|
|
21
|
+
constructor(teeWorlds = null) {
|
|
21
22
|
super();
|
|
23
|
+
if (typeof teeWorlds === Object) {
|
|
24
|
+
this.TW = teeWorlds;
|
|
25
|
+
} else {
|
|
26
|
+
this.TW = teeworlds;
|
|
27
|
+
}
|
|
22
28
|
this.activeBots = new Map();
|
|
23
29
|
this.botCounter = 0;
|
|
24
30
|
this.botFreezeStates = new Map(); // Хранит состояние заморозки для каждого бота
|
|
@@ -82,8 +88,10 @@ class BotManager extends EventEmitter {
|
|
|
82
88
|
country: 0
|
|
83
89
|
};
|
|
84
90
|
logDebug('creating bot client');
|
|
91
|
+
|
|
92
|
+
let TW = this.TW; // teeworlds
|
|
85
93
|
// то самое место откуда создаеться клинт бота
|
|
86
|
-
const client = new
|
|
94
|
+
const client = new TW.Client(serverIp, serverPort, botName, { // изпользуем имя без уникального суффикса чтобы было одно имя.
|
|
87
95
|
identity: identity // то самое индентити для скина и тд
|
|
88
96
|
});
|
|
89
97
|
|
|
@@ -123,7 +131,7 @@ class BotManager extends EventEmitter {
|
|
|
123
131
|
return false; // бот не найден
|
|
124
132
|
}
|
|
125
133
|
try {
|
|
126
|
-
botInfo.client.
|
|
134
|
+
botInfo.client.connect(); // то самое место подключения
|
|
127
135
|
return true; // да
|
|
128
136
|
} catch (error) { // фак
|
|
129
137
|
logDebug(error);
|
|
@@ -303,7 +311,7 @@ class BotManager extends EventEmitter {
|
|
|
303
311
|
clearInterval(chatinterval);
|
|
304
312
|
});
|
|
305
313
|
|
|
306
|
-
client.on('
|
|
314
|
+
client.on('connected', () => { // Шок контент бот зашел на сервер
|
|
307
315
|
const botInfo = this.getBotInfo(botName); // получаем инфу о боте
|
|
308
316
|
if (!botInfo) {
|
|
309
317
|
return; // бот не найден фак
|
|
@@ -354,7 +362,7 @@ class BotManager extends EventEmitter {
|
|
|
354
362
|
this.emit(`${botName}:disconnected`, reason, reconnectTime);
|
|
355
363
|
logDebug(`${botName} disconnected due to: `, reason, '\nand reconnecting in ', reconnectTime, 'ms');
|
|
356
364
|
setTimeout(() => {
|
|
357
|
-
client.
|
|
365
|
+
client.connect();
|
|
358
366
|
this.emit(`${botName}:reconnect`, reconnectTime);
|
|
359
367
|
logDebug(`${botName} reconnect now`);
|
|
360
368
|
}, reconnectTime);
|
|
@@ -412,7 +420,7 @@ class BotManager extends EventEmitter {
|
|
|
412
420
|
chatinterval = setInterval(() => {
|
|
413
421
|
s.clear();
|
|
414
422
|
}, 1000); // чистка
|
|
415
|
-
client.on('
|
|
423
|
+
client.on('message', (msg) => {
|
|
416
424
|
this.emit(`${botName}:message`, msg); // Сырое сообщение, без фильтрации
|
|
417
425
|
|
|
418
426
|
const msgraw = msg; // ориг для чата на всякий
|