Retrieve Trivia Questions With open-trivia-db
Elitezen

Elitezen @elitezen

Joined:
Apr 15, 2022

Retrieve Trivia Questions With open-trivia-db

Publish Date: Apr 19 '22
5 0

Easy Trivia

open-trivia-db is a small, simple and fast wrapper for OpenTriviaDatabase - A Free to use, user-contributed trivia question database. This module is lightweight, easy to use and fully typed!

If you use Discord.JS, checkout discord-trivia

Setup

Setup a JavaScript or TypeScript project and install open-trivia-db via NPM:

npm i open-trivia-db
Enter fullscreen mode Exit fullscreen mode

Basic API Calls

The bread and butter of this library is the getQuestions() function. Provide options describing what kind of questions you want to retrieve such as:

amount - The amount of questions to fetch (min. 1, max. 50)
difficulty - The difficulty of questions.
type - Question type (true/false or multiple choice)
category - The category of questions.

import { getQuestions, CategoryNames } from "open-trivia-db";

const questions = await getQuestions({
  amount: 10,
  category: CategoryNames.Animals,
  difficulty: 'easy',
  type: 'multiple'
})
Enter fullscreen mode Exit fullscreen mode

The result will be an array of questions with the following shape:

[
{
    value: 'The Italian automaker Lamborghini uses what animal as its logo?',
    category: 'Vehicles',
    type: 'multiple',
    difficulty: 'easy',
    correctAnswer: 'Bull',
    incorrectAnswers: [ 'Bat', 'Horse', 'Snake' ],
    allAnswers: [ 'Bat', 'Horse', 'Snake', 'Bull' ],
    checkAnswer: [Function: checkAnswer]
  },
...
]
Enter fullscreen mode Exit fullscreen mode

Categories

OpenTDB contains 24 categories to choose from:

1. General Knowledge
2. Entertainment: Books
3. Entertainment: Film
4. Entertainment: Music
5. Entertainment: Musicals and Theatres
6. Entertainment: Television
7. Entertainment: Video Games
8. Entertainment: Board Games
9. Science and Nature
10. Science: Computers
11. Science Mathematics
12. Mythology
13. Sports
14. Geography
15. History
16. Politics
17. Art
18. Celebrities
19. Animals
20. Vehicles
21. Entertainment: Comics
22. Science: Gadgets
23. Entertainment: Japanese Anime and Manga
24. Entertainment: Cartoon and Animations
Enter fullscreen mode Exit fullscreen mode

Use the CategoryNames enum to choose categories.

Initiating a category can be done by passing a CategoryResolvable into the constructor

import { Category, CategoryNames } from 'open-trivia-db';


let myCategory = Category.getCategory(9);

myCategory = await Category.getCategory(CategoryNames.Geography); // (9)

console.log(myCategory);

// {
//   id: 22,
//   name: 'Geography',
//   questionCount: { 
//     total: 275, 
//     easy: 80, medium: 139, hard: 56 
//   }
// }
Enter fullscreen mode Exit fullscreen mode

Sessions

OpenTDB API sessions track the questions it has served you and allows for prevention of duplicate questions throughout multiple API calls.

import { Session, getQuestions } from 'open-trivia-db';

const session = new Session();

async function sessionCalls() {
   await session.start();

   const batch1 = await getQuestions({
      amount: 10,
      difficulty: 'hard',
      session
   });

   const batch2 = await getQuestions({
     amount: 10,
     difficulty: 'hard',
     session
   });


   const completeBatch = [...batch1, ...batch2]; // All unique!
}

session.end();
Enter fullscreen mode Exit fullscreen mode

NPM: https://www.npmjs.com/package/open-trivia-db
GitHub: https://github.com/Elitezen/open-trivia-db-wrapper
Documentation: https://github.com/Elitezen/open-trivia-db-wrapper/wiki/Documentation

Comments 0 total

    Add comment