ddbot.js-0374 3.2.0 → 3.2.2
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 +92 -17
- package/docs/documentation.md +86 -6
- package/docs/examples/chat.js +1 -1
- package/docs/examples/echo-bot.js +1 -1
- package/package.json +1 -1
- package/src/bot/bot.js +3 -1
package/README.md
CHANGED
|
@@ -7,7 +7,12 @@
|
|
|
7
7
|
Так что да, не плакайте там.
|
|
8
8
|
Простите за орфографические ошибки, писал на скорую руку. (за другие ошибки простите тоже)
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
|
|
11
|
+
Ето модуль для роботы с ДДНет (DDNet/teeworlds) ботами. Внутри изпользует чистую библиотеку teeworlds (https://www.npmjs.com/package/teeworlds, https://www.npmjs.com/~swarfey) и просто делает рутинные вещи за вас. Например, может работать с кучей ботов на разных серверах, делает чат не повторяющимся без спамов. Убирает системные сообщения из чата. Можно получить весь список игроков одним методом.
|
|
12
|
+
|
|
13
|
+
Вообще я делал его для себя, и по приколу. Но решил выложить чтобы проще работать с зависимостями и не качать с гита.
|
|
14
|
+
|
|
15
|
+
Лицензия находиться в файле "LICENSE" там большими буквами для идиотов написано ( MIT )
|
|
11
16
|
|
|
12
17
|
У нас есть много всякого, например:
|
|
13
18
|
1. bot.js
|
|
@@ -34,17 +39,17 @@
|
|
|
34
39
|
Сейчас я вам разкажу как работает bot/BotManager.
|
|
35
40
|
|
|
36
41
|
teeworlds
|
|
37
|
-
####
|
|
42
|
+
#### Методы
|
|
38
43
|
У нас есть :
|
|
39
44
|
1. bot.createBot()
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
1. fulladdress - Полный адрес сервера (IP:порт)
|
|
46
|
+
2. botName - Имя бота
|
|
47
|
+
3. parameter - Параметры бота
|
|
48
|
+
1. identity со скином и другими косметическими деталями.
|
|
49
|
+
2. reconnect переподключаеться бот или нет
|
|
50
|
+
3. reconnectAttempts количество возможных реконектов (-1 для безконечного)
|
|
51
|
+
4. randreconnect будет ли бот переключаться с чуть разной задержкой или нет (в районе 0 - 1 сек)
|
|
52
|
+
- На выходе у нас имя бота по которому можно обращаться. (Уникальное имя бота или null в случае ошибки)
|
|
48
53
|
2. bot.connectBot()
|
|
49
54
|
1. Принимает уникальное имя бота и подключает нужного.
|
|
50
55
|
- На выхоте булевое значение (нет точных данных подключился ли бот или нет)
|
|
@@ -64,22 +69,22 @@ teeworlds
|
|
|
64
69
|
1. Принимает уникальное имя бота.
|
|
65
70
|
- Возвращает булевое значение.
|
|
66
71
|
8. bot.setFreezeBot()
|
|
67
|
-
Просто меняет значение того заморожен ли бот.
|
|
72
|
+
Просто меняет значение того заморожен ли бот. (не влияет на игру)
|
|
68
73
|
9. bot.getAllActiveBots()
|
|
69
|
-
|
|
70
|
-
|
|
74
|
+
Получение всех активных ботов
|
|
75
|
+
- Массив имен всех активных ботов
|
|
71
76
|
10. bot.getBotClient()
|
|
72
77
|
1. Принимает уникальное имя бота.
|
|
73
|
-
- Возвращает клиент teeworlds
|
|
78
|
+
- Возвращает клиент teeworlds
|
|
74
79
|
11. bot.removeBot()
|
|
75
|
-
|
|
80
|
+
Удаляет бота полностью. (и отключает)
|
|
76
81
|
1. Принимает уникальное имя бота.
|
|
77
82
|
- Возвращает булевое значение.
|
|
78
83
|
12. bot.getBot()
|
|
79
84
|
1. Принимает уникальное имя бота.
|
|
80
85
|
- Возвращает прокси-объект бота.
|
|
81
86
|
13. bot._setupBotEvents()
|
|
82
|
-
Заставляет ивенты работать. Изпользуеться в bot.createBot() чтобы вы могли делать все проще и вам не нужно было получать оригинальный клиент teeworlds
|
|
87
|
+
Заставляет ивенты работать. Изпользуеться в bot.createBot() чтобы вы могли делать все проще и вам не нужно было получать оригинальный клиент teeworlds для ивентов.
|
|
83
88
|
1. Принимает уникальное имя бота.
|
|
84
89
|
2. Принимает клиент teeworlds
|
|
85
90
|
Ничего не возвращает.
|
|
@@ -89,4 +94,74 @@ teeworlds
|
|
|
89
94
|
15. bot.getPlayerName()
|
|
90
95
|
1. Принимает уникальное имя бота/Array список игроков.
|
|
91
96
|
2. clientid нужного игрока.
|
|
92
|
-
- Имя нужного игрока.
|
|
97
|
+
- Имя нужного игрока.
|
|
98
|
+
|
|
99
|
+
#### пример ехо бота
|
|
100
|
+
```js
|
|
101
|
+
// Пример писался под комит c453b96f9fd717375f5ff70525603b7e1491c290.
|
|
102
|
+
|
|
103
|
+
const DebugLogger = require('loger0374'); // мой логер (не обязательно изпользовать)
|
|
104
|
+
const { bot, botClassAndLoger } = require('../../index');
|
|
105
|
+
const botdebug = botClassAndLoger.logDebuger;
|
|
106
|
+
botdebug.setDebugMode(true, true, true);
|
|
107
|
+
|
|
108
|
+
const logDebuger = new DebugLogger('example', true, true, null, true);
|
|
109
|
+
|
|
110
|
+
async function main() {
|
|
111
|
+
logDebuger.logDebug('Main started');
|
|
112
|
+
|
|
113
|
+
const identitybot = {
|
|
114
|
+
name: "Towa",
|
|
115
|
+
clan: "Towa Team",
|
|
116
|
+
skin: "Astolfofinho",
|
|
117
|
+
use_custom_color: 1,
|
|
118
|
+
color_body: 16711680,
|
|
119
|
+
color_feet: 16711680,
|
|
120
|
+
country: 804
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
const botName = await bot.createBot('45.141.57.22:8311', 'Towa', {
|
|
124
|
+
identity: identitybot,
|
|
125
|
+
reconnect: true,
|
|
126
|
+
reconnectAttempts: -1,
|
|
127
|
+
randreconnect: true
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
bot.connectBot(botName); // подкюлчаем
|
|
131
|
+
|
|
132
|
+
const botClient = bot.getBotClient(botName); // получаем оригинальный клиент teeworlds
|
|
133
|
+
|
|
134
|
+
// Подписка на событие подключения
|
|
135
|
+
bot.on(`${botName}:connect`, () => {
|
|
136
|
+
let timemsg = 0; // время
|
|
137
|
+
|
|
138
|
+
setTimeout(() => {
|
|
139
|
+
botClient.game.Say('Ку всем');
|
|
140
|
+
}, 1251);
|
|
141
|
+
|
|
142
|
+
// подписка на чат
|
|
143
|
+
bot.on(`${botName}:ChatNoSystem`, (msgraw, autormsg, text, team, client_id) => {
|
|
144
|
+
logDebuger.logDebug(`${client_id} ${team} '${autormsg}' : ${text}`); // вывод чата в консоль
|
|
145
|
+
if (text == 'exit') exit(); // выход
|
|
146
|
+
|
|
147
|
+
// Эхо-логика
|
|
148
|
+
if (Date.now() - timemsg > 6000) {
|
|
149
|
+
timemsg = Date.now(); // устанавливаем текущее время
|
|
150
|
+
if (text && autormsg) {
|
|
151
|
+
botClient.game.Say(`${autormsg}: ${text}`); // отправка сообения (teeworlds)
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
// Выход через Ctrl+C
|
|
158
|
+
async function exit() {
|
|
159
|
+
logDebuger.logDebug('Shutting down...');
|
|
160
|
+
await bot.disconnectAllBots(); // отключаем всех ботов
|
|
161
|
+
process.exit(0); // завершаем процес
|
|
162
|
+
}
|
|
163
|
+
process.on('SIGINT', exit); // Ctrl+C
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if (require.main === module) main();
|
|
167
|
+
```
|
package/docs/documentation.md
CHANGED
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
# bot/BotManager
|
|
2
|
+
|
|
3
|
+
установка
|
|
4
|
+
"npm i ddbot.js-0374"
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
Ето модуль для роботы с ДДНет (DDNet/teeworlds) ботами. внутри изпользует чистую библиотеку teeworlds (https://www.npmjs.com/package/teeworlds, https://www.npmjs.com/~swarfey) и просто делает рутинные вещи за вас. Например, может работать с кучей ботов на разных серверах, делает чат не повторяющимся без спамов. Убирает системные сообщения из чата. Можно получить весь список игроков одним методом.
|
|
8
|
+
|
|
9
|
+
Вообще я делал его для себя, и по приколу. Но решил выложить чтобы проще работать с зависимостями и не качать с гита.
|
|
10
|
+
|
|
11
|
+
|
|
2
12
|
Окей...
|
|
3
13
|
Сейчас я вам разкажу как работает bot/BotManager.
|
|
4
14
|
|
|
5
15
|
teeworlds
|
|
6
|
-
##
|
|
16
|
+
## методы
|
|
7
17
|
У нас есть :
|
|
8
18
|
1. bot.createBot()
|
|
9
19
|
1. fulladdress - Полный адрес сервера (IP:порт)
|
|
@@ -33,7 +43,7 @@ teeworlds
|
|
|
33
43
|
1. Принимает уникальное имя бота.
|
|
34
44
|
- Возвращает булевое значение.
|
|
35
45
|
8. bot.setFreezeBot()
|
|
36
|
-
Просто меняет значение того заморожен ли бот.
|
|
46
|
+
Просто меняет значение того заморожен ли бот. (не влияет на игру)
|
|
37
47
|
9. bot.getAllActiveBots()
|
|
38
48
|
Получение всех активных ботов
|
|
39
49
|
- Массив имен всех активных ботов
|
|
@@ -41,14 +51,14 @@ teeworlds
|
|
|
41
51
|
1. Принимает уникальное имя бота.
|
|
42
52
|
- Возвращает клиент teeworlds
|
|
43
53
|
11. bot.removeBot()
|
|
44
|
-
Удаляет бота полностью.
|
|
54
|
+
Удаляет бота полностью. (и отключает)
|
|
45
55
|
1. Принимает уникальное имя бота.
|
|
46
56
|
- Возвращает булевое значение.
|
|
47
57
|
12. bot.getBot()
|
|
48
58
|
1. Принимает уникальное имя бота.
|
|
49
59
|
- Возвращает прокси-объект бота.
|
|
50
|
-
13. bot.(
|
|
51
|
-
Заставляет ивенты работать. Изпользуеться в bot.createBot() чтобы вы могли делать все проще и вам не нужно было получать оригинальный клиент teeworlds
|
|
60
|
+
13. bot._setupBotEvents()
|
|
61
|
+
Заставляет ивенты работать. Изпользуеться в bot.createBot() чтобы вы могли делать все проще и вам не нужно было получать оригинальный клиент teeworlds для ивентов.
|
|
52
62
|
1. Принимает уникальное имя бота.
|
|
53
63
|
2. Принимает клиент teeworlds
|
|
54
64
|
Ничего не возвращает.
|
|
@@ -58,4 +68,74 @@ teeworlds
|
|
|
58
68
|
15. bot.getPlayerName()
|
|
59
69
|
1. Принимает уникальное имя бота/Array список игроков.
|
|
60
70
|
2. clientid нужного игрока.
|
|
61
|
-
- Имя нужного игрока.
|
|
71
|
+
- Имя нужного игрока.
|
|
72
|
+
|
|
73
|
+
## пример ехо бота
|
|
74
|
+
```js
|
|
75
|
+
// Пример писался под комит c453b96f9fd717375f5ff70525603b7e1491c290.
|
|
76
|
+
|
|
77
|
+
const DebugLogger = require('loger0374'); // мой логер (не обязательно изпользовать)
|
|
78
|
+
const { bot, botClassAndLoger } = require('../../index');
|
|
79
|
+
const botdebug = botClassAndLoger.logDebuger;
|
|
80
|
+
botdebug.setDebugMode(true, true, true);
|
|
81
|
+
|
|
82
|
+
const logDebuger = new DebugLogger('example', true, true, null, true);
|
|
83
|
+
|
|
84
|
+
async function main() {
|
|
85
|
+
logDebuger.logDebug('Main started');
|
|
86
|
+
|
|
87
|
+
const identitybot = {
|
|
88
|
+
name: "Towa",
|
|
89
|
+
clan: "Towa Team",
|
|
90
|
+
skin: "Astolfofinho",
|
|
91
|
+
use_custom_color: 1,
|
|
92
|
+
color_body: 16711680,
|
|
93
|
+
color_feet: 16711680,
|
|
94
|
+
country: 804
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
const botName = await bot.createBot('45.141.57.22:8311', 'Towa', {
|
|
98
|
+
identity: identitybot,
|
|
99
|
+
reconnect: true,
|
|
100
|
+
reconnectAttempts: -1,
|
|
101
|
+
randreconnect: true
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
bot.connectBot(botName); // подкюлчаем
|
|
105
|
+
|
|
106
|
+
const botClient = bot.getBotClient(botName); // получаем оригинальный клиент teeworlds
|
|
107
|
+
|
|
108
|
+
// Подписка на событие подключения
|
|
109
|
+
bot.on(`${botName}:connect`, () => {
|
|
110
|
+
let timemsg = 0; // время
|
|
111
|
+
|
|
112
|
+
setTimeout(() => {
|
|
113
|
+
botClient.game.Say('Ку всем');
|
|
114
|
+
}, 1251);
|
|
115
|
+
|
|
116
|
+
// подписка на чат
|
|
117
|
+
bot.on(`${botName}:ChatNoSystem`, (msgraw, autormsg, text, team, client_id) => {
|
|
118
|
+
logDebuger.logDebug(`${client_id} ${team} '${autormsg}' : ${text}`); // вывод чата в консоль
|
|
119
|
+
if (text == 'exit') exit(); // выход
|
|
120
|
+
|
|
121
|
+
// Эхо-логика
|
|
122
|
+
if (Date.now() - timemsg > 6000) {
|
|
123
|
+
timemsg = Date.now(); // устанавливаем текущее время
|
|
124
|
+
if (text && autormsg) {
|
|
125
|
+
botClient.game.Say(`${autormsg}: ${text}`); // отправка сообения (teeworlds)
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
// Выход через Ctrl+C
|
|
132
|
+
async function exit() {
|
|
133
|
+
logDebuger.logDebug('Shutting down...');
|
|
134
|
+
await bot.disconnectAllBots(); // отключаем всех ботов
|
|
135
|
+
process.exit(0); // завершаем процес
|
|
136
|
+
}
|
|
137
|
+
process.on('SIGINT', exit); // Ctrl+C
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (require.main === module) main();
|
|
141
|
+
```
|
package/docs/examples/chat.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Пример писался под комит c453b96f9fd717375f5ff70525603b7e1491c290.
|
|
2
2
|
|
|
3
|
-
const DebugLogger = require('
|
|
3
|
+
const DebugLogger = require('loger0374'); // Подключаем логгер
|
|
4
4
|
const { bot, botClassAndLoger } = require('../../index'); // Подключаем бота (если подключаете с пакета, то ddbot.js-0374)
|
|
5
5
|
const botdebug = botClassAndLoger.logDebuger;
|
|
6
6
|
botdebug.setDebugMode(true, true, true);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Пример писался под комит c453b96f9fd717375f5ff70525603b7e1491c290.
|
|
2
2
|
|
|
3
|
-
const DebugLogger = require('
|
|
3
|
+
const DebugLogger = require('loger0374');
|
|
4
4
|
const { bot, botClassAndLoger } = require('../../index');
|
|
5
5
|
const botdebug = botClassAndLoger.logDebuger;
|
|
6
6
|
botdebug.setDebugMode(true, true, true);
|
package/package.json
CHANGED
package/src/bot/bot.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// 0374flop MIT
|
|
2
|
+
// npm i ddbot.js-0374
|
|
2
3
|
|
|
3
4
|
"use strict";
|
|
4
5
|
const teeworlds = require('teeworlds');
|
|
5
6
|
const EventEmitter = require('events');
|
|
6
|
-
const DebugLogger = require('
|
|
7
|
+
const DebugLogger = require('loger0374');
|
|
7
8
|
const logDebuger = new DebugLogger('BotManager', false, true, null, true);
|
|
8
9
|
const logDebug = ( ...args) => {
|
|
9
10
|
logDebuger.logDebug(...args);
|
|
@@ -82,6 +83,7 @@ class BotManager extends EventEmitter {
|
|
|
82
83
|
const uniqueBotName = this.generateUniqueBotName(botName);
|
|
83
84
|
try {
|
|
84
85
|
const identity = parameter.identity || { // если нет индентити, создаём дефолтное
|
|
86
|
+
name: botName,
|
|
85
87
|
clan: "",
|
|
86
88
|
skin: "default",
|
|
87
89
|
use_custom_color: 0,
|