diff --git a/src/games/8ball.js b/src/games/8ball.js index a8cc7ed..53204b1 100644 --- a/src/games/8ball.js +++ b/src/games/8ball.js @@ -13,7 +13,7 @@ const contemplations = [ 'Let\'s see...', ]; -const answers = { +const answersByType = { positive: [ 'It is certain', 'It is decidedly so', @@ -42,6 +42,7 @@ const answers = { ], }; +const answers = Object.entries(answersByType).flatMap(([type, typeAnswers]) => typeAnswers.map((answer) => ({ answer, type }))); const questions = new Map(); function purgeQuestions() { @@ -65,13 +66,16 @@ async function onCommand(args, context) { ? stringSimilarity.findBestMatch(question, Array.from(questions.keys())).bestMatch : null; - const answerType = similarQuestion?.rating > 0.5 - ? questions.get(similarQuestion.target).answerType - : Object.keys(answers)[crypto.randomInt(0, 3)]; + const similarQuestionType = similarQuestion?.rating > 0.6 && questions.get(similarQuestion.target)?.type; - const answer = answers[answerType][crypto.randomInt(0, answers[answerType].length)]; + const { answer, type } = similarQuestionType + ? { + answer: answersByType[similarQuestionType][crypto.randomInt(0, answersByType[similarQuestionType].length)], + type: similarQuestionType, + } + : answers[crypto.randomInt(0, answers.length)]; - questions.set(question, { answerType, timestamp: new Date() }); + questions.set(question, { type, timestamp: new Date() }); context.sendMessage(`🎱 ${contemplations[crypto.randomInt(0, contemplations.length)]}`, context.room.id, { label: false });