import { Client, GatewayIntentBits } from 'discord.js' import { UserMessage, registerEvents } from './utils/events.js' import Events from './events/index.js' import { Ollama } from 'ollama' import { Queue } from './queues/queue.js' // Import keys/tokens import Keys from './keys.js' // initialize the client with the following permissions when logging in const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMembers, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent ] }); // initialize connection to ollama container const ollama = new Ollama({ host: `http://${Keys.ipAddress}:${Keys.portAddress}`, }) // Create Queue managed by Events const messageHistory: Queue = new Queue /** * register events for bot to listen to in discord * @param messageHistory message history for the llm * @param Events events to register * @param client the bot reference * @param Keys tokens from .env files */ registerEvents(client, Events, messageHistory, Keys, ollama) // Try to log in the client await client.login(Keys.clientToken) .catch((error) => { console.error('[Login Error]', error) process.exit(1) }) // queue up bots name messageHistory.enqueue({ role: 'assistant', content: `My name is ${client.user?.username}` })