import dotenv from 'dotenv' dotenv.config() import { handleDeliveryMessage } from './delivery.js' import { handleReservationMessage } from './reservations.js' import { Client, GatewayIntentBits, Partials } from 'discord.js' import { logger } from './utils.js' import {extractIntentAndAgent} from './openai/master_functions.js' const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent, GatewayIntentBits.DirectMessages, ], partials: [Partials.Channel], }) const botToken = process.env.DISCORD_BOT_TOKEN const activityChannelId = process.env.DISCORD_ACTIVITY_CHANNEL_ID client.on('ready', () => { logger(`Logged in as ${client.user.tag}!`) }) client.on('messageCreate', async (message) => { if (message.channel.isDMBased() && !message.author.bot) { logger(`Received DM from ${message.author.username}: ${message.content}`) const intent = await extractIntentAndAgent(message.content) if (intent) { const { agent, messageContent } = intent switch (agent) { case 'ReservationAgent': message.reply('Служителя за резервации се заема...') logActivity(`${message.author.username}: ${message.content}`) handleReservationMessage(message) break case 'DeliveryAgent': message.reply('Служителя за доставки се заема...') logActivity(`${message.author.username}: ${message.content}`) handleDeliveryMessage(message) break case 'Unknown': default: message.reply(messageContent) } } else { // In case something goes wrong, provide a generic fallback message.reply('Извинявайте, възникна проблем. Опитайте отново по-късно.') } } }) const logActivity = async (activityMessage) => { const channel = await client.channels.fetch(activityChannelId) await channel.send(activityMessage) } client.login(botToken)