To see available quiz decks, start a quiz, and see other basic help, just say k!quiz.
For interactive help writing a custom quiz command, try my Quiz Command Builder.
The score limit of a quiz can be configured by specifying a number after the quiz name. For example: k!quiz N1 20 for a JLPT N1 quiz with a score limit of 20. This setting can also be set with the k!settings command.
You can replay the questions you got wrong. To replay the questions no one got correct during the most recent game in the current channel, say k!quiz review. To replay the questions that you did not get correct in the most recent game that you scored at least one point in, say k!quiz reviewme. Reviewme does not have to be used in the same channel that you played in. You can do it elsewhere, like in a DM. Note that if I reboot, I will forget your previous game and you will not be able to review it.
You can mix any decks by using the + sign. For example: k!quiz N1+N2+N3.
You can also control the percentage of questions that come from each deck. For example: k!quiz N1(20%)+N2(30%)+N3(50%). By default, each deck has an equal chance of having the next question pulled from it.
While a quiz is in progress, you can use k!quiz save to save and pause it. When you are ready to play again, you can use k!quiz load to load your save. This is mostly used for conquest mode. When you save, most settings (fonts, timing settings, etc) are also saved and are restored on load. If you want to override any settings on load, you can do so by using the various parameters described more farther down, for example k!quiz load 1 font=5 will load your first save and use font #5.
Conquest mode tries to teach you by repeating questions that you do not correctly answer. If you answer a question correctly the first time, you will not see it again. If you get it wrong, you will see it again at least several more times. You can save and load your progress so that you do not have to do a whole deck in one sitting (that would be pretty hardcore). You can start a quiz in conquest mode by writing conquest somewhere in your quiz command. For example: k!quiz N1 conquest.
You can configure the pace of the game by using the pacing presets (from fastest to slowest) nodelay, faster, fast, or slow. Just specify the preset somewhere in your quiz command. For example: k!quiz N1 fast for an N1 quiz that's a little faster than default. For more fine-grained control over pacing, see the next four sections in this manual, or use the custom pacing option in my Quiz Command Builder.
The answer time limit of a quiz can be configured by specifying a number in seconds as the atl= parameter. For example: k!quiz N1 atl=10 for a JLPT N1 quiz where you only get 10 seconds to answer each question. This setting can also be set with the k!settings command.
After a player answers correctly, other players have a small amount of time during which they can also answer correctly and get a point. This is the Additional Answer Wait Window. You can configure it by specifying a number in seconds as the aaww= parameter (d'aww <3). For example: k!quiz N1 aaww=1 for a JLPT N1 quiz where other players only get one second to answer the question after someone answers correctly. This setting can also be set with the k!settings command.
After a question is answered correctly and the Additional Answer Wait Window closes, I will show the answer and wait a few seconds before showing the next question. You can configure the length of that wait by specifying a number in seconds as the daaq= parameter. For example: k!quiz N1 daaq=1. This setting can also be set with the k!settings command.
If time runs out and no one answers the question, I will show the answer and wait a few seconds before showing the next question. You can configure the length of that wait by specifying a number in seconds as the dauq= parameter. For example: k!quiz N1 dauq=1. You might want to set this much higher than Delay After Answered Question if you want some time to add questions to Anki or something. This setting can also be set with the k!settings command.
You can use this setting to limit how many questions are allowed to be missed total (not necessarily in a row). If that many questions go unanswered, I will end the quiz. You can set this by using the mmq= parameter. For example: k!quiz N1 mmq=3. This setting can also be set with the k!settings command. Note that there is also a separate setting that controls the maximum number of questions that can be missed in a row. That one can only be set by server admins, in k!settings.
You can customize fonts and colors by using the k!settings command and going into the fonts submenu by entering 4. Alternatively, you can use the font=, color=, and/or bgcolor= inline options. For help doing that, and to more easily experiment with different settings, try the online Quiz Command Builder or use the k!draw command in Discord and read the instructions it shows.
If you want to draw questions from a part of a deck instead of the whole thing, you can do that by specifying a range in parentheses. For example: k!quiz N1(1-100) to draw questions only from the first 100 questions in the N1 deck.
You can save aliases for quiz commands that you use often. For example if you like to do k!quiz N1(1-100) font=5 you can save that as an alias named myquiz and then you can just do k!quiz myquiz. Say k!quiz alias to add or delete aliases.
If you want to disable randomization of question order, you can use the noshuffle option. For example k!quiz n1 noshuffle.
Some decks are multiple choice by default, and you can make most other decks multiple choice by adding -mc to the deck name. For example: k!quiz N1-mc for a multiple choice N1 quiz. Some decks cannot be made multiple choice. For those, the -mc modifier will simply be ignored. Note that the -mc modifier is per-deck. So if you want to mix two decks and use multiple choice for both, you should do it like k!quiz N1-mc+N2-mc.
In hardcore mode each player only gets one chance to answer the question. Hardcore mode is always enabled for multiple choices quizzes (because I got tired of people typing in 1 2 3 4 hahahahahah). Hardcore mode can be enabled for any quiz by saying hardcore anywhere in your quiz start command. For example: k!quiz N1 hardcore.
By default, after a player gets a question correct, the timeout ends (almost) immediately and the bot moves on to the next question. If you would like to disable this, you can use the norace option. For example: k!quiz LN1 norace. This is especially nice if you want to play listening quizzes with multiple people, so that everyone gets a chance to hear the whole audio track and answer.
I accept answers inside of spoiler tags. So you can type your answer surrounded by || to hide your answer from other Discord users. For example ||にほんご||. This can be good if you want to compete with friends without having to type quickly. You can use a high value for the aaww= parameter and give your answers in spoilers.
You can create custom decks and import/export them from files in the dashboard.
To import a deck from Anki, click the deck settings button in Anki (the cog icon to the right of the "Due" column on the deck list), click "Export", select "Cards in Plain Text (txt)" as the export format, uncheck "Include HTML and media references", then click export and save the file.
To import from a CSV file, create a spreadsheet with at least two columns with headings (Question and Answer) and optionally up to three more columns (Comment, Instructions, Render As). Save it as a CSV file. Note that there's a lot of variation in how different software exports spreadsheets to CSV, and not all of them will work (at least with default export settings). You should have good luck using Google Sheets.
If you mark your deck as searchable, then other users can search for it using the k!quiz search command. Therefore searchable decks must follow some rules:
Violating these rules may lead to your deck being deleted or your being banned from using Kotoba. If you have questions or need to report a deck, visit my server or use the contact form.
Kotoba has a REST API which was built for use by this website. Some developers have also used the API to build things like role-granting bots (i.e. you pass a certain quiz, you get a certain role). I neither encourage nor discourage this. The API has little to no documentation, may change at any time, and support is limited. If that is acceptable to you, you may use the API.
When a quiz ends, Kotoba sends a link to a session report, which looks something like https://kotobaweb.com/dashboard/game_reports/631cd23b848792b5c3a1a6c1. You may replace the dashboard part of the URL with api to fetch machine-readable JSON which contains scores, settings used, and other relevant information.