mirror of
https://github.com/legop3/MultiRoombaRover.git
synced 2026-09-16 17:40:46 -04:00
discord bot
This commit is contained in:
@@ -2,6 +2,7 @@ const EventEmitter = require('events');
|
||||
const io = require('../globals/io');
|
||||
const { sendAlert, COLORS } = require('./alertService');
|
||||
const { isAdmin, isLockdownAdmin } = require('./roleService');
|
||||
const { publishEvent } = require('./eventBus');
|
||||
|
||||
const MODES = {
|
||||
OPEN: 'open',
|
||||
@@ -20,11 +21,12 @@ function canChangeMode(socket, nextMode) {
|
||||
return isAdmin(socket);
|
||||
}
|
||||
|
||||
function setMode(nextMode, socket) {
|
||||
function setMode(nextMode, socket, options = {}) {
|
||||
if (!Object.values(MODES).includes(nextMode)) {
|
||||
throw new Error(`Unknown mode ${nextMode}`);
|
||||
}
|
||||
if (!canChangeMode(socket, nextMode)) {
|
||||
const force = Boolean(options.force);
|
||||
if (!force && !canChangeMode(socket, nextMode)) {
|
||||
throw new Error('Not authorized to change mode');
|
||||
}
|
||||
if (currentMode === nextMode) {
|
||||
@@ -36,6 +38,11 @@ function setMode(nextMode, socket) {
|
||||
title: 'Mode Changed',
|
||||
message: `Server mode set to ${nextMode}`,
|
||||
});
|
||||
publishEvent({
|
||||
source: 'modeManager',
|
||||
type: 'mode.changed',
|
||||
payload: { mode: currentMode, by: socket?.data?.user?.username || null },
|
||||
});
|
||||
modeEvents.emit('change', currentMode);
|
||||
io.emit('mode', { mode: currentMode });
|
||||
return currentMode;
|
||||
|
||||
Reference in New Issue
Block a user