UNPKG

@venixthedev/kahootjs

Version:

Replacement for kahoot.js-updated that works

87 lines (83 loc) 2.29 kB
const LiveRequestData = require("../assets/LiveRequestData.js"); const sleep = require("../util/sleep.js"); require('kahoot.js-fix') /** * @fileinfo This is the backup module * - Loads the RecoveryData event */ module.exports = function(){ /** * @function client.requestRecoveryData - Request recovery information from the server * * @returns {Promise} Resolves when request is sent and received. */ this.requestRecoveryData = async()=>{ await sleep(0.5); return new Promise((resolve)=>{ this._send(new LiveRequestData(this),(r)=>{ resolve(); }); }); }; this.handlers.recovery = (message)=>{ if(message.channel === "/service/player" && message.data && message.data.id === 17){ const recover = JSON.parse(message.data.content); /** * Emitted when the server sends its recovery data. * This event is mostly for debugging. * * @event Client#RecoveryData * @see {@link https://kahoot.js.org/#/enum/LiveEventRecoveryData} */ this.emit("RecoveryData",recover); if(!this.quiz){ this.quiz = { get questionCount(){return (this.quizQuestionAnswers && this.quizQuestionAnswers.length) || 10;} }; } this.quiz.quizQuestionAnswers = recover.defaultQuizData.quizQuestionAnswers; const data = recover.data; switch (recover.state) { case 0:{ break; } case 1:{ this._emit("QuizStart",data); break; } case 2:{ this._emit("QuestionReady",data.getReady); break; } case 3:{ this._emit("QuestionStart",data); break; } case 4: case 5:{ this._emit("TimeUp",data); if(data.revealAnswer){ this._emit("QuestionEnd",data.revealAnswer); } break; } case 6:{ this._emit("QuizEnd",data); break; } case 7:{ this._emit("Feedback"); break; } } } }; if(this.defaults.reconnect){ this.on("Joined",()=>{ if(this.reconnectRecovery){ this.requestRecoveryData(); } }); } this.once("NameAccept",this.requestRecoveryData); };