# quizzcord

> A simple quizz package for discord bots where you can create your own quizz and play with your friends or with the community !

Latest version **1.0.10** (published 2023-12-21) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install quizzcord
pnpm add quizzcord
yarn add quizzcord
bun add quizzcord
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.10 |
| Published | 2023-12-21 |
| First published | 2023-12-21 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 195.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | TrRollet |
| Maintainers | trrollet |
| Keywords | discord, quizz, bot, discord-bot, discordjs, discord.js, question, questions, quizzcord, answer, trivia, trivia-bot, trivia-quiz, trivia-game, game, games, quiz, quizzes, trivia-quiz-bot, fun, easy, simple, setup |

## Links

- npm: https://www.npmjs.com/package/quizzcord
- Repository: https://github.com/TrRollet/QuizzCord
- Homepage: https://github.com/TrRollet/QuizzCord#readme
- Issues: https://github.com/TrRollet/QuizzCord/issues
- npm.io page: https://npm.io/package/quizzcord

## Recent versions

- 1.0.10 (latest) — 2023-12-21
- 1.0.9 — 2023-12-21
- 1.0.8 — 2023-12-21
- 1.0.7 — 2023-12-21
- 1.0.6 — 2023-12-21
- 1.0.5 — 2023-12-21
- 1.0.4 — 2023-12-21
- 1.0.3 — 2023-12-21
- 1.0.2 — 2023-12-21
- 1.0.1 — 2023-12-21
- 1.0.0 — 2023-12-21

## README

# Quizzcord
<img src="https://raw.githubusercontent.com/TrRollet/QuizzCord/main/assets/logo.jpg" width="200" height="200">

[![npm](https://img.shields.io/npm/v/quizzcord.svg)](https://www.npmjs.com/package/quizzcord)
[![npm](https://img.shields.io/npm/dt/quizzcord.svg)](https://www.npmjs.com/package/quizzcord)
[![Support Server](https://img.shields.io/discord/1187360104371208226.svg?color=7289da&label=Support%20Server&logo=discord&style=flat-square)](https://discord.gg/fqHd6GBraG)
[![GitHub](https://img.shields.io/github/license/TrRollet/QuizzCord.svg)](https://github.com/TrRollet/QuizzCord/blob/main/LICENSE)
[![GitHub stars](https://img.shields.io/github/stars/TrRollet/QuizzCord.svg?style=social&label=Stars)](https://github.com/TrRollet/QuizzCord/stargazers)

## 📖 Description
A simple quizz module for Discord.js bots. It allows you to create a quizz with questions and answers, and to check if the answers are correct. It also allows you to get the score of a user and the leaderboard.

## ✅ Examples
```js
const Discord = require('discord.js');
const client = new Discord.Client();
const { Quizz } = require('quizzcord');

createQuizz = async () {
	const quizz = new Quizz();
	await quizz.init();

	await quizz.addQuestion('What is the capital of France?', ['Paris']);
	await quizz.addQuestion('What is 2+2?', ['4', 'four']);

	return quizz;
}

// ... 

// async function
let question = quizz.getQuestion();
const answer = "Paris";
const correct = await quizz.checkAnswer(user.id, answer); // If the answer is correct, the score of the user is incremented (custom points in future versions)
if (correct) {
	let score = quizz.getScore(user.id);
	quizz.nextQuestion();
	message.channel.send(`Correct! Your score is now ${score}`);

	question = quizz.getQuestion();
	if (!question) {
		quizz.getLeaderboard((leaderboard) => {
			// [{ player_id: '123456789', score: 2 }, { player_id: '987654321', score: 1 }}]
		});
	}
	// Send the question to the channel
}

// ...
```

## 📚 Documentation
### ❓ Quizz
#### 🛠️ Methods
##### `init(state)`
Initialize the quizz. The state is optional and can be used to restore a quizz. Returns a promise.

##### `addQuestion(question, answers)`
Add a question to the quizz. The question must be a string, and the answers an array of strings.

##### `getQuestion()`
Get the current question. Returns a string.

##### `checkAnswer(player_id, answer)`
Check if the answer is correct. Returns a promise that resolves to a boolean.

##### `nextQuestion()`
Go to the next question.

##### `getScore(player_id)`
Get the score of a user. Returns a promise that resolves to an integer.

##### `getLeaderboard()`
Get the leaderboard. Returns an array of objects sorted by score with this structure:
```js
[{ player_id: '123456789', score: 2 }, { player_id: '987654321', score: 1 }]
```

##### `getAllQuestions()`
Get all the questions. Returns an array of objects with this structure:
```js
[{ question: 'What is the capital of France?', answers: ['Paris'] }, { question: 'What is 2+2?', answers: ['4', 'four'] }]
```

##### `getAllAnswers()`
Get all the answers of the current question. Returns an array of strings.

##### `removeQuestion(index)`
Remove a question. The index is the index of the question in the array returned by `getAllQuestions` (starting at 0).

##### `addAnswerToQuestion(index, answer)`
Add an answer to a question. The index is the index of the question in the array returned by `getAllQuestions` (starting at 0).

##### `removeAnswerFromQuestion(index, answer)`
Remove an answer from a question. The index is the index of the question in the array returned by `getAllQuestions` (starting at 0).

##### `reset()`
Reset the quizz by removing scores but keeping questions and answers.

##### `delete()`
Delete the quizz by removing all questions, answers and scores.

##### `saveState()`
Save the state of the quizz. Returns an Object that can be used to restore the quizz with the `init` method.

## 📜License
This project is licensed under the Apache-2.0 License - see the [LICENSE](LICENSE) file for details

---
_Source: https://npm.io/package/quizzcord · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
