# Configuring Your Game
Discord Trivia allows for the configuration of nearly every aspect of your game. The following settings can be configured:
- Custom Question Usage
- Configuration of fetched trivia questions
- Player count limits
- Filtering out users
- Minimum and Maximum amount of points
- Bonus points for streaking players
- Revealing the correct answer
- Timeouts between segments
- Automatic message deletion
# Keep in Mind
A game's configuration will be directly overwritten with assignments to game.config. Make sure to assign any configurations before starting the game:
game.config[...] = ...
// ... rest of config
game.setupQueue();
# Creating Custom Questions
To create custom questions, import the MultipleChoiceQuestion and BooleanQuestion builders from the package.
import { MultipleChoiceQuestion, BooleanQuestion } from 'discord-trivia';
Next, define an array named customQuestions. This is where you will add your custom questions. Follow the template below to build custom questions.
const customQuestions = [
new BooleanQuestion()
.setValue("discord-trivia is awesome!")
.setCategory("My epic category")
.setDifficulty('easy')
.setCorrectAnswer('true'),
new MultipleChoiceQuestion()
.setValue("What's the best pizza topping?")
.setCategory("food")
.setDifficulty('medium')
.setCorrectAnswer("Chicken feet")
.setIncorrectAnswers(["Pepperoni", "Sausage", "Olives"])
// Add more custom questions here...
];
Lastly, assign your array of custom questions to Game.config.customQuestions.
game.config.customQuestions = customQuestions;
# Configuring Fetched Trivia Questions
You can choose the style of fetched trivia question to have in your game via Game.config.fetchQuestionsOptions. The only required override is amount (default 10). Undefined options will default to randomized.
game.config.fetchQuestionsOptions = {
amount: 15,
category: 'Animals',
difficulty: 'easy',
type: 'multiple'
}
# Player Count Limits
Set the minimum and maximum amount of players required for a game.
game.config.minPlayerCount = 3;
game.config.maxPlayerCount = 10;
# Filtering Out Users
Restrict which users can join the game by applying a filter that runs each time a player tries to join the queue.
game.config.playerFilter = async (user) => {
// Example: Allow only users with the "trivia" role to join
const member = await interaction.guild.members.fetch(user.id);
const triviaRole = interaction.guild.roles.cache.find(r => r.name == 'trivia');
return member.roles.cache.has(triviaRole.id);
}
# Minimum and Maximum Amount of Points
Configure the minimum and maximum points a player can earn per question.
game.config.minPoints = 10;
game.config.maxPoints = 100;
# Bonus Points for Streaks
Configure bonus points for streaks.
game.config.streakDefinitionLevel = 3;
game.config.pointsPerStreakAmount = 20;
game.config.maximumStreakBonus = 100;
# Revealing the Correct Answer
Set whether to reveal the correct answer at the end of each round.
game.config.showAnswers = true;
# Timeouts Between Segments
Control the timeouts between rounds and during questions.
game.config.timeBetweenRounds = 5_000; // 5 seconds
game.config.timePerQuestion = 15_000; // 15 seconds
# Automatic Message Deletion
Configure automatic message deletion.
game.config.messageDeleter.queue = 20_000;
game.config.messageDeleter.gameStart = 10_000;
game.config.messageDeleter.leaderboardUpdate = null;
game.config.messageDeleter.question = null;