45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
// commands.js
|
|
import b4a from 'b4a';
|
|
import fs from 'fs';
|
|
|
|
const agentAvatarPath = './assets/agent.png';
|
|
let agentAvatar = '';
|
|
|
|
// Load the agent avatar once when the module is imported
|
|
if (fs.existsSync(agentAvatarPath)) {
|
|
const avatarBuffer = fs.readFileSync(agentAvatarPath);
|
|
agentAvatar = `data:image/png;base64,${b4a.toString(avatarBuffer, 'base64')}`;
|
|
}
|
|
|
|
export default async function handleCommand(command, context) {
|
|
const { eventEmitter, currentTopic, clearMessages, addMessage, joinRoom, leaveRoom } = context;
|
|
|
|
const args = command.trim().split(' ');
|
|
const cmd = args[0].toLowerCase();
|
|
const restArgs = args.slice(1).join(' ');
|
|
|
|
switch (cmd) {
|
|
case '~clear':
|
|
clearMessages();
|
|
break;
|
|
case '~ping':
|
|
addMessage('LinkUp', 'pong', agentAvatar, currentTopic());
|
|
break;
|
|
case '~help':
|
|
addMessage('LinkUp', 'Available commands: ~clear, ~ping, ~help, ~join [topic], ~leave', agentAvatar, currentTopic());
|
|
break;
|
|
case '~join':
|
|
if (restArgs) {
|
|
await joinRoom(restArgs);
|
|
} else {
|
|
addMessage('LinkUp', 'Usage: ~join [topic]', agentAvatar, currentTopic());
|
|
}
|
|
break;
|
|
case '~leave':
|
|
leaveRoom(currentTopic());
|
|
break;
|
|
default:
|
|
console.log('Unknown command:', command);
|
|
}
|
|
}
|