vantiv.io 1.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/LICENSE +21 -0
- package/README.md +864 -0
- package/index.js +13 -0
- package/package.json +28 -0
- package/src/classes/Actions/Awaiter.js +202 -0
- package/src/classes/Actions/Channel.js +73 -0
- package/src/classes/Actions/Direct.js +263 -0
- package/src/classes/Actions/Inventory.js +156 -0
- package/src/classes/Actions/Music.js +278 -0
- package/src/classes/Actions/Player.js +377 -0
- package/src/classes/Actions/Public.js +66 -0
- package/src/classes/Actions/Room.js +333 -0
- package/src/classes/Actions/Utils.js +29 -0
- package/src/classes/Actions/lib/AudioStreaming.js +447 -0
- package/src/classes/Caches/MovementCache.js +357 -0
- package/src/classes/Handlers/AxiosErrorHandler.js +68 -0
- package/src/classes/Handlers/ErrorHandler.js +65 -0
- package/src/classes/Handlers/EventHandlers.js +259 -0
- package/src/classes/Handlers/WebSocketHandlers.js +54 -0
- package/src/classes/Managers/ChannelManager.js +303 -0
- package/src/classes/Managers/DanceFloorManagers.js +509 -0
- package/src/classes/Managers/Helpers/CleanupManager.js +130 -0
- package/src/classes/Managers/Helpers/LoggerManager.js +171 -0
- package/src/classes/Managers/Helpers/MetricsManager.js +83 -0
- package/src/classes/Managers/Networking/ConnectionManager.js +259 -0
- package/src/classes/Managers/Networking/CooldownManager.js +516 -0
- package/src/classes/Managers/Networking/EventsManager.js +64 -0
- package/src/classes/Managers/Networking/KeepAliveManager.js +109 -0
- package/src/classes/Managers/Networking/MessageHandler.js +110 -0
- package/src/classes/Managers/Networking/Request.js +329 -0
- package/src/classes/Managers/PermissionManager.js +288 -0
- package/src/classes/WebApi/Category/Grab.js +98 -0
- package/src/classes/WebApi/Category/Item.js +347 -0
- package/src/classes/WebApi/Category/Post.js +154 -0
- package/src/classes/WebApi/Category/Room.js +137 -0
- package/src/classes/WebApi/Category/User.js +88 -0
- package/src/classes/WebApi/webapi.js +52 -0
- package/src/constants/TypesConstants.js +89 -0
- package/src/constants/WebSocketConstants.js +80 -0
- package/src/core/Highrise.js +123 -0
- package/src/core/HighriseWebsocket.js +228 -0
- package/src/utils/ConvertSvgToPng.js +51 -0
- package/src/utils/ModelPool.js +160 -0
- package/src/utils/Models.js +128 -0
- package/src/utils/versionCheck.js +27 -0
- package/src/validators/ConfigValidator.js +205 -0
- package/src/validators/ConnectionValidator.js +65 -0
- package/typings/index.d.ts +3820 -0
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
class RoomClass {
|
|
2
|
+
constructor(bot) {
|
|
3
|
+
this.bot = bot
|
|
4
|
+
this.logger = this.bot.logger
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
privilege = {
|
|
8
|
+
get: async (user_id) => {
|
|
9
|
+
const method = 'bot.room.privilege.get'
|
|
10
|
+
|
|
11
|
+
try {
|
|
12
|
+
if (!user_id || typeof user_id !== 'string') throw new TypeError('user_id must be a non-empty string');
|
|
13
|
+
|
|
14
|
+
const payload = {
|
|
15
|
+
_type: 'GetRoomPrivilegeRequest',
|
|
16
|
+
user_id: user_id
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const response = await this.bot._requestResponse.send(payload)
|
|
20
|
+
return response.content
|
|
21
|
+
} catch (error) {
|
|
22
|
+
if (error instanceof TypeError) {
|
|
23
|
+
this.logger.error(method, `TypeError: ${error.message}`, { user_id }, error);
|
|
24
|
+
} else {
|
|
25
|
+
this.logger.error(method, `Failed to get user room privilege: ${error.message}`, { user_id }, error);
|
|
26
|
+
return {}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
isModerator: async (user_id) => {
|
|
32
|
+
const method = 'bot.room.privilege.isModerator'
|
|
33
|
+
|
|
34
|
+
try {
|
|
35
|
+
if (!user_id || typeof user_id !== 'string') throw new TypeError('user_id must be a non-empty string');
|
|
36
|
+
|
|
37
|
+
const payload = {
|
|
38
|
+
_type: 'GetRoomPrivilegeRequest',
|
|
39
|
+
user_id: user_id
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const response = await this.bot._requestResponse.send(payload)
|
|
43
|
+
return response.content.moderator === true
|
|
44
|
+
} catch (error) {
|
|
45
|
+
if (error instanceof TypeError) {
|
|
46
|
+
this.logger.error(method, `TypeError: ${error.message}`, { user_id }, error);
|
|
47
|
+
} else {
|
|
48
|
+
this.logger.error(method, `Failed to check moderator status: ${error.message}`, { user_id }, error);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
|
|
53
|
+
isDesigner: async (user_id) => {
|
|
54
|
+
const method = 'bot.room.privilege.isDesigner'
|
|
55
|
+
|
|
56
|
+
try {
|
|
57
|
+
if (!user_id || typeof user_id !== 'string') throw new TypeError('user_id must be a non-empty string');
|
|
58
|
+
|
|
59
|
+
const payload = {
|
|
60
|
+
_type: 'GetRoomPrivilegeRequest',
|
|
61
|
+
user_id: user_id
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const response = await this.bot._requestResponse.send(payload)
|
|
65
|
+
return response.content.designer === true
|
|
66
|
+
} catch (error) {
|
|
67
|
+
if (error instanceof TypeError) {
|
|
68
|
+
this.logger.error(method, `TypeError: ${error.message}`, { user_id }, error);
|
|
69
|
+
} else {
|
|
70
|
+
this.logger.error(method, `Failed to check designer status: ${error.message}`, { user_id }, error);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
designer = {
|
|
77
|
+
add: async (user_id) => {
|
|
78
|
+
const method = 'bot.room.designer.add'
|
|
79
|
+
|
|
80
|
+
try {
|
|
81
|
+
if (!user_id || typeof user_id !== 'string') throw new TypeError('user_id must be a non-empty string');
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
const payload = {
|
|
85
|
+
_type: 'ChangeRoomPrivilegeRequest',
|
|
86
|
+
user_id: user_id,
|
|
87
|
+
permissions: { designer: true }
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const response = await this.bot._fireAndForget.send(payload)
|
|
91
|
+
return response.success
|
|
92
|
+
} catch (error) {
|
|
93
|
+
if (error instanceof TypeError) {
|
|
94
|
+
this.logger.error(method, `TypeError: ${error.message}`, { user_id }, error);
|
|
95
|
+
} else {
|
|
96
|
+
this.logger.error(method, `Failed to add user as designer: ${error.message}`, { user_id }, error);
|
|
97
|
+
return false
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
|
|
102
|
+
remove: async (user_id) => {
|
|
103
|
+
const method = 'bot.room.designer.remove'
|
|
104
|
+
|
|
105
|
+
try {
|
|
106
|
+
if (!user_id || typeof user_id !== 'string') throw new TypeError('user_id must be a non-empty string');
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
const payload = {
|
|
110
|
+
_type: 'ChangeRoomPrivilegeRequest',
|
|
111
|
+
user_id: user_id,
|
|
112
|
+
permissions: { designer: false }
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const response = await this.bot._fireAndForget.send(payload)
|
|
116
|
+
return response.success
|
|
117
|
+
} catch (error) {
|
|
118
|
+
if (error instanceof TypeError) {
|
|
119
|
+
this.logger.error(method, `TypeError: ${error.message}`, { user_id }, error);
|
|
120
|
+
} else {
|
|
121
|
+
this.logger.error(method, `Failed to remove designer privilege: ${error.message}`, { user_id }, error);
|
|
122
|
+
return false
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
moderator = {
|
|
129
|
+
add: async (user_id) => {
|
|
130
|
+
const method = 'bot.room.moderator.add'
|
|
131
|
+
|
|
132
|
+
try {
|
|
133
|
+
if (!user_id || typeof user_id !== 'string') throw new TypeError('user_id must be a non-empty string');
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
const payload = {
|
|
137
|
+
_type: 'ChangeRoomPrivilegeRequest',
|
|
138
|
+
user_id: user_id,
|
|
139
|
+
permissions: { moderator: true }
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
const response = await this.bot._fireAndForget.send(payload)
|
|
143
|
+
return response.success
|
|
144
|
+
} catch (error) {
|
|
145
|
+
if (error instanceof TypeError) {
|
|
146
|
+
this.logger.error(method, `TypeError: ${error.message}`, { user_id }, error);
|
|
147
|
+
} else {
|
|
148
|
+
this.logger.error(method, `Failed to add user as moderator: ${error.message}`, { user_id }, error);
|
|
149
|
+
return false
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
|
|
154
|
+
remove: async (user_id) => {
|
|
155
|
+
const method = 'bot.room.moderator.remove'
|
|
156
|
+
|
|
157
|
+
try {
|
|
158
|
+
if (!user_id || typeof user_id !== 'string') throw new TypeError('user_id must be a non-empty string');
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
const payload = {
|
|
162
|
+
_type: 'ChangeRoomPrivilegeRequest',
|
|
163
|
+
user_id: user_id,
|
|
164
|
+
permissions: { moderator: false }
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
const response = await this.bot._fireAndForget.send(payload)
|
|
168
|
+
return response.success
|
|
169
|
+
} catch (error) {
|
|
170
|
+
if (error instanceof TypeError) {
|
|
171
|
+
this.logger.error(method, `TypeError: ${error.message}`, { user_id }, error);
|
|
172
|
+
} else {
|
|
173
|
+
this.logger.error(method, `Failed to remove moderator privilege: ${error.message}`, { user_id }, error);
|
|
174
|
+
return false
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
users = {
|
|
181
|
+
get: async () => {
|
|
182
|
+
const method = 'bot.room.users.get'
|
|
183
|
+
|
|
184
|
+
try {
|
|
185
|
+
const payload = {
|
|
186
|
+
_type: 'GetRoomUsersRequest'
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
const response = await this.bot._requestResponse.send(payload)
|
|
190
|
+
return response.content
|
|
191
|
+
} catch (error) {
|
|
192
|
+
this.logger.error(method, `Failed to get room users: ${error.message}`);
|
|
193
|
+
return []
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
|
|
197
|
+
id: async (username) => {
|
|
198
|
+
const method = 'bot.room.users.id'
|
|
199
|
+
|
|
200
|
+
try {
|
|
201
|
+
if (!username || typeof username !== 'string') throw new TypeError('username must be a non-empty string');
|
|
202
|
+
|
|
203
|
+
const users = await this.users.get()
|
|
204
|
+
const user = users.find(u => u[0].username === username)
|
|
205
|
+
if (!user) throw new Error(`User with username '${username}' not in room`)
|
|
206
|
+
|
|
207
|
+
return user[0].id
|
|
208
|
+
} catch (error) {
|
|
209
|
+
if (error instanceof TypeError) {
|
|
210
|
+
this.logger.error(method, `TypeError: ${error.message}`, { username }, error);
|
|
211
|
+
} else {
|
|
212
|
+
this.logger.error(method, `Failed to get user ID: ${error.message}`, { username }, error);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
|
|
217
|
+
username: async (id) => {
|
|
218
|
+
const method = 'bot.room.users.username'
|
|
219
|
+
|
|
220
|
+
try {
|
|
221
|
+
if (!id || typeof id !== 'string') throw new TypeError('id must be a non-empty string');
|
|
222
|
+
|
|
223
|
+
const users = await this.users.get()
|
|
224
|
+
const user = users.find(u => u[0].id === id)
|
|
225
|
+
if (!user) throw new Error(`User with ID '${id}' not in room`)
|
|
226
|
+
|
|
227
|
+
return user[0].username
|
|
228
|
+
} catch (error) {
|
|
229
|
+
if (error instanceof TypeError) {
|
|
230
|
+
this.logger.error(method, `TypeError: ${error.message}`, { id }, error);
|
|
231
|
+
} else {
|
|
232
|
+
this.logger.error(method, `Failed to get username: ${error.message}`, { id }, error);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
|
|
237
|
+
position: async (identifier) => {
|
|
238
|
+
const method = 'bot.room.users.position'
|
|
239
|
+
|
|
240
|
+
try {
|
|
241
|
+
if (!identifier || typeof identifier !== 'string') throw new TypeError('identifier must be a non-empty string');
|
|
242
|
+
|
|
243
|
+
const users = await this.users.get()
|
|
244
|
+
const user = users.find(u => u[0].id === identifier || u[0].username === identifier)
|
|
245
|
+
if (!user) throw new Error(`User '${identifier}' not in room`)
|
|
246
|
+
|
|
247
|
+
return user[1]
|
|
248
|
+
} catch (error) {
|
|
249
|
+
if (error instanceof TypeError) {
|
|
250
|
+
this.logger.error(method, `TypeError: ${error.message}`, { identifier }, error);
|
|
251
|
+
} else {
|
|
252
|
+
this.logger.error(method, `Failed to get user position: ${error.message}`, { identifier }, error);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
voice = {
|
|
259
|
+
check: async () => {
|
|
260
|
+
const method = 'bot.room.voice.check'
|
|
261
|
+
let result = {}
|
|
262
|
+
|
|
263
|
+
try {
|
|
264
|
+
const payload = {
|
|
265
|
+
_type: 'CheckVoiceChatRequest'
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
const response = await this.bot._requestResponse.send(payload)
|
|
269
|
+
|
|
270
|
+
if (response.seconds_left) {
|
|
271
|
+
result.secondsLeft = response.seconds_left
|
|
272
|
+
result.autoSpeakersId = response.auto_speakers
|
|
273
|
+
result.users = response.users
|
|
274
|
+
} else {
|
|
275
|
+
result.message = response.message
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
return result
|
|
279
|
+
} catch (error) {
|
|
280
|
+
this.logger.error(method, `Failed to check room voice status: ${error.message}`);
|
|
281
|
+
}
|
|
282
|
+
},
|
|
283
|
+
|
|
284
|
+
invite: async (user_id) => {
|
|
285
|
+
const method = 'bot.room.voice.invite'
|
|
286
|
+
|
|
287
|
+
try {
|
|
288
|
+
if (!user_id || typeof user_id !== 'string') throw new TypeError('user_id must be a non-empty string');
|
|
289
|
+
|
|
290
|
+
const payload = {
|
|
291
|
+
_type: 'InviteSpeakerRequest',
|
|
292
|
+
user_id
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
const response = await this.bot._fireAndForget.send(payload)
|
|
296
|
+
return response.success
|
|
297
|
+
} catch (error) {
|
|
298
|
+
if (error instanceof TypeError) {
|
|
299
|
+
this.logger.error(method, `TypeError: ${error.message}`, { user_id }, error);
|
|
300
|
+
} else {
|
|
301
|
+
this.logger.error(method, `Failed to invite user to voice: ${error.message}`, { user_id }, error);
|
|
302
|
+
return false
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
},
|
|
306
|
+
|
|
307
|
+
remove: async (user_id) => {
|
|
308
|
+
const method = 'bot.room.voice.remove'
|
|
309
|
+
|
|
310
|
+
try {
|
|
311
|
+
if (!user_id || typeof user_id !== 'string') throw new TypeError('user_id must be a non-empty string');
|
|
312
|
+
|
|
313
|
+
const payload = {
|
|
314
|
+
_type: 'RemoveSpeakerRequest',
|
|
315
|
+
user_id
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
const response = await this.bot._fireAndForget.send(payload)
|
|
319
|
+
return response.success
|
|
320
|
+
} catch (error) {
|
|
321
|
+
if (error instanceof TypeError) {
|
|
322
|
+
this.logger.error(method, `TypeError: ${error.message}`, { user_id }, error);
|
|
323
|
+
} else {
|
|
324
|
+
this.logger.error(method, `Failed to remove user from voice: ${error.message}`, { user_id }, error);
|
|
325
|
+
return false
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
module.exports = { RoomClass }
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const PermissionManager = require("highrise-core/src/classes/Managers/PermissionManager");
|
|
2
|
+
const CooldownManager = require("highrise-core/src/classes/Managers/Networking/CooldownManager");
|
|
3
|
+
const DanceFloor = require("highrise-core/src/classes/Managers/DanceFloorManagers");
|
|
4
|
+
const { Logger } = require("highrise-core/src/classes/Managers/Helpers/LoggerManager")
|
|
5
|
+
|
|
6
|
+
class Utils {
|
|
7
|
+
constructor(bot, options) {
|
|
8
|
+
this.bot = bot
|
|
9
|
+
this.logger = new Logger(this, options)
|
|
10
|
+
this.DanceFloor = new DanceFloor(this.bot)
|
|
11
|
+
this.cooldown = new CooldownManager()
|
|
12
|
+
|
|
13
|
+
this.permissions = new PermissionManager(bot, this, {
|
|
14
|
+
dataDir: './data/permissions',
|
|
15
|
+
filename: 'roles.json',
|
|
16
|
+
customRoles: options.customRoles || []
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
async sleep(ms) {
|
|
21
|
+
if (ms < 0) {
|
|
22
|
+
this.logger.warn('bot.utils.sleep', 'Negative delay provided, using 0ms');
|
|
23
|
+
ms = 0;
|
|
24
|
+
}
|
|
25
|
+
return new Promise(resolve => setTimeout(resolve, ms))
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
module.exports = Utils
|