bonktools 2.3.0 → 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/bonk_fullchain.pem +36 -0
- package/examples/host-bot.js +63 -0
- package/examples/simple-bot.js +127 -0
- package/old/bonkbot.js +1266 -0
- package/old/examplebot.js +64 -0
- package/package.json +6 -8
- package/scripts/download-cert.js +121 -0
- package/src/bot.js +1498 -0
- package/src/packet.js +374 -0
- package/src/utils/constants.js +153 -0
- package/src/utils/errors.js +137 -0
- package/src/utils/logger.js +109 -0
- package/src/utils/validation.js +130 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIGTDCCBDSgAwIBAgIQOXpmzCdWNi4NqofKbqvjsTANBgkqhkiG9w0BAQwFADBf
|
|
3
|
+
MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQD
|
|
4
|
+
Ey1TZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYw
|
|
5
|
+
HhcNMjEwMzIyMDAwMDAwWhcNMzYwMzIxMjM1OTU5WjBgMQswCQYDVQQGEwJHQjEY
|
|
6
|
+
MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQDEy5TZWN0aWdvIFB1Ymxp
|
|
7
|
+
YyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gQ0EgRFYgUjM2MIIBojANBgkqhkiG9w0B
|
|
8
|
+
AQEFAAOCAY8AMIIBigKCAYEAljZf2HIz7+SPUPQCQObZYcrxLTHYdf1ZtMRe7Yeq
|
|
9
|
+
RPSwygz16qJ9cAWtWNTcuICc++p8Dct7zNGxCpqmEtqifO7NvuB5dEVexXn9RFFH
|
|
10
|
+
12Hm+NtPRQgXIFjx6MSJcNWuVO3XGE57L1mHlcQYj+g4hny90aFh2SCZCDEVkAja
|
|
11
|
+
EMMfYPKuCjHuuF+bzHFb/9gV8P9+ekcHENF2nR1efGWSKwnfG5RawlkaQDpRtZTm
|
|
12
|
+
M64TIsv/r7cyFO4nSjs1jLdXYdz5q3a4L0NoabZfbdxVb+CUEHfB0bpulZQtH1Rv
|
|
13
|
+
38e/lIdP7OTTIlZh6OYL6NhxP8So0/sht/4J9mqIGxRFc0/pC8suja+wcIUna0HB
|
|
14
|
+
pXKfXTKpzgis+zmXDL06ASJf5E4A2/m+Hp6b84sfPAwQ766rI65mh50S0Di9E3Pn
|
|
15
|
+
2WcaJc+PILsBmYpgtmgWTR9eV9otfKRUBfzHUHcVgarub/XluEpRlTtZudU5xbFN
|
|
16
|
+
xx/DgMrXLUAPaI60fZ6wA+PTAgMBAAGjggGBMIIBfTAfBgNVHSMEGDAWgBRWc1hk
|
|
17
|
+
lfmSGrASKgRieaFAFYghSTAdBgNVHQ4EFgQUaMASFhgOr872h6YyV6NGUV3LBycw
|
|
18
|
+
DgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0lBBYwFAYI
|
|
19
|
+
KwYBBQUHAwEGCCsGAQUFBwMCMBsGA1UdIAQUMBIwBgYEVR0gADAIBgZngQwBAgEw
|
|
20
|
+
VAYDVR0fBE0wSzBJoEegRYZDaHR0cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdv
|
|
21
|
+
UHVibGljU2VydmVyQXV0aGVudGljYXRpb25Sb290UjQ2LmNybDCBhAYIKwYBBQUH
|
|
22
|
+
AQEEeDB2ME8GCCsGAQUFBzAChkNodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3Rp
|
|
23
|
+
Z29QdWJsaWNTZXJ2ZXJBdXRoZW50aWNhdGlvblJvb3RSNDYucDdjMCMGCCsGAQUF
|
|
24
|
+
BzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEA
|
|
25
|
+
YtOC9Fy+TqECFw40IospI92kLGgoSZGPOSQXMBqmsGWZUQ7rux7cj1du6d9rD6C8
|
|
26
|
+
ze1B2eQjkrGkIL/OF1s7vSmgYVafsRoZd/IHUrkoQvX8FZwUsmPu7amgBfaY3g+d
|
|
27
|
+
q1x0jNGKb6I6Bzdl6LgMD9qxp+3i7GQOnd9J8LFSietY6Z4jUBzVoOoz8iAU84OF
|
|
28
|
+
h2HhAuiPw1ai0VnY38RTI+8kepGWVfGxfBWzwH9uIjeooIeaosVFvE8cmYUB4TSH
|
|
29
|
+
5dUyD0jHct2+8ceKEtIoFU/FfHq/mDaVnvcDCZXtIgitdMFQdMZaVehmObyhRdDD
|
|
30
|
+
4NQCs0gaI9AAgFj4L9QtkARzhQLNyRf87Kln+YU0lgCGr9HLg3rGO8q+Y4ppLsOd
|
|
31
|
+
unQZ6ZxPNGIfOApbPVf5hCe58EZwiWdHIMn9lPP6+F404y8NNugbQixBber+x536
|
|
32
|
+
WrZhFZLjEkhp7fFXf9r32rNPfb74X/U90Bdy4lzp3+X1ukh1BuMxA/EEhDoTOS3l
|
|
33
|
+
7ABvc7BYSQubQ2490OcdkIzUh3ZwDrakMVrbaTxUM2p24N6dB+ns2zptWCva6jzW
|
|
34
|
+
r8IWKIMxzxLPv5Kt3ePKcUdvkBU/smqujSczTzzSjIoR5QqQA6lN1ZRSnuHIWCvh
|
|
35
|
+
JEltkYnTAH41QJ6SAWO66GrrUESwN/cgZzL4JLEqz1Y=
|
|
36
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
const { createBot, LOG_LEVELS } = require("bonkbot");
|
|
2
|
+
// const { createBot, LOG_LEVELS } = require("../src/index");
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
// Create a bot instance
|
|
6
|
+
const bot = createBot({
|
|
7
|
+
account: {
|
|
8
|
+
username: "bonkbot",
|
|
9
|
+
guest: true,
|
|
10
|
+
},
|
|
11
|
+
PROTOCOL_VERSION: 49,
|
|
12
|
+
logLevel: LOG_LEVELS.WARN,
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
// Handle ready event
|
|
16
|
+
bot.events.on("ready", async () => {
|
|
17
|
+
console.log("Bot is ready!");
|
|
18
|
+
|
|
19
|
+
// Connect to the server
|
|
20
|
+
await bot.connect()
|
|
21
|
+
|
|
22
|
+
// Create a room after connecting
|
|
23
|
+
await bot.createRoom({
|
|
24
|
+
roomname: "BonkBot's Room",
|
|
25
|
+
maxplayers: 2,
|
|
26
|
+
roompassword: "",
|
|
27
|
+
hidden: false
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// Handle connect event
|
|
32
|
+
bot.events.on("ready", function() {
|
|
33
|
+
bot.events.on("ROOM_SHARE_LINK", () => {
|
|
34
|
+
console.log(`Bot created room!\nURL: ${bot.getShareLink()}`);
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
// Set up packet handler
|
|
38
|
+
bot.events.on("PACKET", function(packet) {
|
|
39
|
+
bot.autoHandlePacket(packet);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// Handle chat messages
|
|
43
|
+
bot.events.on("CHAT_MESSAGE", function(message) {
|
|
44
|
+
console.log(message.player.username + ": " + message.message);
|
|
45
|
+
|
|
46
|
+
// Check for players command
|
|
47
|
+
if (message.message === "!players") {
|
|
48
|
+
var players = bot.getAllPlayers(true);
|
|
49
|
+
var playerNames = [];
|
|
50
|
+
|
|
51
|
+
for (var i = 0; i < players.length; i++) {
|
|
52
|
+
playerNames.push(players[i].username);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
bot.chat("Players online (" + players.length + "): " + playerNames.join(", "));
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// Initialize the bot
|
|
61
|
+
bot.init().catch((error) => {
|
|
62
|
+
console.error("Failed to initialize bot:", error);
|
|
63
|
+
});
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
const { createBot, LOG_LEVELS } = require("bonkbot");
|
|
2
|
+
|
|
3
|
+
// Create a bot instance
|
|
4
|
+
const bot = createBot({
|
|
5
|
+
account: {
|
|
6
|
+
username: "bonkbot",
|
|
7
|
+
guest: true,
|
|
8
|
+
},
|
|
9
|
+
PROTOCOL_VERSION: 49,
|
|
10
|
+
logLevel: LOG_LEVELS.WARN,
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
// Handle ready event
|
|
14
|
+
bot.events.on("ready", async () => {
|
|
15
|
+
console.log("Bot is ready!");
|
|
16
|
+
|
|
17
|
+
try {
|
|
18
|
+
// Find a room by name
|
|
19
|
+
const roomInfo = await bot.getAddressFromRoomName("test");
|
|
20
|
+
// const roomInfo = await bot.getAddressFromUrl("https://bonk.io/533118qkpuw");
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
console.log(`Found room: ${roomInfo.roomname}`);
|
|
24
|
+
|
|
25
|
+
// Set the room address
|
|
26
|
+
bot.setAddress(roomInfo);
|
|
27
|
+
|
|
28
|
+
// Connect to the server
|
|
29
|
+
await bot.connect();
|
|
30
|
+
|
|
31
|
+
// Join the room
|
|
32
|
+
await bot.joinRoom();
|
|
33
|
+
|
|
34
|
+
// with a password
|
|
35
|
+
|
|
36
|
+
// await bot.joinRoom({
|
|
37
|
+
// password: "32",
|
|
38
|
+
// });
|
|
39
|
+
|
|
40
|
+
} catch (error) {
|
|
41
|
+
console.error("Failed to find or connect to room:", error);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
// Handle connect event
|
|
46
|
+
bot.events.on("connect", () => {
|
|
47
|
+
console.log("Bot connected to server!");
|
|
48
|
+
|
|
49
|
+
bot.events.on("JOIN", () => {
|
|
50
|
+
bot.chat("Connected to the room!")
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
bot.events.on("COUNTDOWN", (msg) => {
|
|
54
|
+
bot.chat(`${msg.countdown}!`);
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
bot.events.on("GAME_START", () => {
|
|
58
|
+
bot.chat(`start!`);
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
bot.events.on("GAMEMODE_CHANGE", (msg) => {
|
|
62
|
+
bot.chat(`Gamemode changed to ${msg.mode} with engine ${msg.engine}`);
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
// Set up packet handler
|
|
66
|
+
bot.events.on("PACKET", (packet) => {
|
|
67
|
+
bot.autoHandlePacket(packet);
|
|
68
|
+
|
|
69
|
+
// Ignore spammy packets
|
|
70
|
+
if (packet.type === "TIMESYNC" || packet.type === "PLAYER_PINGS") {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
console.log("Received packet:", packet);
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
// Handle chat messages
|
|
78
|
+
bot.events.on("CHAT_MESSAGE", (message) => {
|
|
79
|
+
console.log(`${message.player.username}: ${message.message}`);
|
|
80
|
+
|
|
81
|
+
// Respond to commands
|
|
82
|
+
switch (message.message) {
|
|
83
|
+
case "!ping":
|
|
84
|
+
bot.chat("Pong!");
|
|
85
|
+
break;
|
|
86
|
+
|
|
87
|
+
case "!help":
|
|
88
|
+
bot.chat("Available commands: !ping, !help, !players, !host");
|
|
89
|
+
break;
|
|
90
|
+
|
|
91
|
+
case "!players":
|
|
92
|
+
const players = bot.getAllPlayers();
|
|
93
|
+
bot.chat(`Players online: ${players.map((p) => p.username).join(", ")}`);
|
|
94
|
+
break;
|
|
95
|
+
|
|
96
|
+
case "!host":
|
|
97
|
+
bot.chat(`The host is ${bot.getHost().username}`);
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
// Handle player join events
|
|
103
|
+
bot.events.on("PLAYER_JOIN", (event) => {
|
|
104
|
+
const player = event.player;
|
|
105
|
+
if (player) {
|
|
106
|
+
console.log(`${player.username} joined the room!`);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
// Handle player leave events
|
|
111
|
+
bot.events.on("PLAYER_LEAVE", (event) => {
|
|
112
|
+
const player = event.player;
|
|
113
|
+
if (player) {
|
|
114
|
+
console.log(`${player.username} left the room!`);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
// Handle disconnection
|
|
119
|
+
bot.events.on("disconnect", () => {
|
|
120
|
+
console.log("Bot disconnected from the room!");
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
// Initialize the bot
|
|
125
|
+
bot.init().catch((error) => {
|
|
126
|
+
console.error("Failed to initialize bot:", error);
|
|
127
|
+
});
|