first commit, basic command handling and auth managing

This commit is contained in:
2025-05-30 22:56:46 +02:00
commit cc796765ed
17 changed files with 610 additions and 0 deletions

27
bot/events/message.ts Normal file
View File

@@ -0,0 +1,27 @@
import { redis } from "bun";
import { chatterId, streamerId, eventSub, commandPrefix } from "..";
import { User } from "../user";
import commands, { sendMessage } from "../commands";
console.info(`Loaded the ${commands.keys().toArray().join(', ')} commands`);
eventSub.onChannelChatMessage(streamerId, streamerId, async msg => {
// Get user from cache or place user in cache
const user = await User.init(msg.chatterName);
// Manage vulnerable chatters
if (![chatterId, streamerId].includes(msg.chatterId)) {// Don't add the chatter or streamer to the vulnerable chatters
if (!await redis.sismember("vulnchatters", msg.chatterId)) {
await redis.sadd('vulnchatters', msg.chatterId);
console.debug(`${msg.chatterDisplayName} is now vulnerable to explosives.`);
};
};
// Parse commands:
if (msg.messageText.startsWith(commandPrefix)) {
const commandSelection = msg.messageText.slice(commandPrefix.length).split(' ')[0]!;
const selected = commands.get(commandSelection.toLowerCase());
if (!selected) { await sendMessage(`${commandSelection} command does not exist`, { replyParentMessageId: msg.messageId }); return; };
await selected.execute(msg, user!);
};
});