import { Client, GatewayIntentBits, Partials } from 'discord.js' import dotenv from 'dotenv' import { saveAnswer, deleteAllAnswers } from './supabase/quizHelper.js' import { logger } from './utils.js' dotenv.config() const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent, GatewayIntentBits.DirectMessages, ], partials: [Partials.Channel], }) client.on('messageCreate', async (message) => { try { if ( !message.author.bot || message.channel.id !== process.env.DISCORD_QUIZ_CHANNEL_ID ) return const regex = /(.+?)\s*\|\s*Q\s*(\d+)\s*\|\s*([\s\S]+)/ const match = message.content.match(regex) if (match) { const teamName = match[1].trim() const questionNumber = match[2].trim() const answer = match[3].trim() console.log( `Team Name: ${teamName}, Question Number: ${questionNumber}, Answer: ${answer}` ) const result = await saveAnswer(teamName, questionNumber, answer) if (!result.success) { console.log(result.error) message.channel.send( result.error === 'Duplicate submission detected.' ? `Team **${teamName}**, you have already submitted an answer for Question **${questionNumber}**.` : 'Failed to save your answer. Please try again.' ) return } } else { console.log('Message format is incorrect.') } } catch (error) { console.error('Error processing quiz submission:', error) } }) client.once('ready', () => { logger('Quiz listener bot is ready.') }) client.login(process.env.DISCORD_BOT_TOKEN)