mirror of
https://github.com/legop3/MultiRoombaRover.git
synced 2026-09-17 18:10:47 -04:00
40 lines
1.7 KiB
JavaScript
40 lines
1.7 KiB
JavaScript
// Discord Command Adapter
|
|
// Purpose: Supplies Discord-specific renderers and extension commands to the operator command service.
|
|
// Scope: Keeps Discord embeds, attachments, guild permissions, and bridge context outside the shared command core.
|
|
const { createStatusCommand } = require('./commands/status');
|
|
const { createReplayCommand } = require('./commands/replay');
|
|
const { createBridgeCommand } = require('./commands/bridge');
|
|
const { createTimeStatusCommand } = require('./commands/timeStatus');
|
|
|
|
function createDiscordTransportHandlers(deps) {
|
|
const status = createStatusCommand(deps);
|
|
const replay = createReplayCommand(deps);
|
|
const bridge = createBridgeCommand(deps);
|
|
const timeStatus = createTimeStatusCommand(deps);
|
|
return {
|
|
status: (request, query) => status(request.context.discordMessage, query),
|
|
replay: (request, query) => replay(request.context.discordMessage, query),
|
|
bridge: (request, tokens) => bridge(request.context.discordMessage, tokens),
|
|
timeStatus: (request) => timeStatus(request.context.discordMessage),
|
|
};
|
|
}
|
|
|
|
function createDiscordCommandRequest(message, { isAdminUser, isLockdownAdminUser }) {
|
|
const id = message.author?.id || null;
|
|
return {
|
|
content: String(message.content || ''),
|
|
transport: 'discord',
|
|
actor: {
|
|
id,
|
|
label: message.member?.nickname || message.author?.globalName || message.author?.username || 'Discord',
|
|
bot: Boolean(message.author?.bot),
|
|
isAdmin: isAdminUser(id),
|
|
isLockdownAdmin: isLockdownAdminUser(id),
|
|
},
|
|
reply: (payload) => message.reply(payload),
|
|
context: { discordMessage: message },
|
|
};
|
|
}
|
|
|
|
module.exports = { createDiscordTransportHandlers, createDiscordCommandRequest };
|