/** * Message to be sent later to a BanchoChannel or BanchoUser * * @prop {BanchoClient} banchojs * @prop {BanchoUser|BanchoChannel} recipient * @prop {string} message */ class OutgoingBanchoMessage { /** * Creates an instance of OutgoingBanchoMessage. * @param {BanchoClient} banchojs * @param {BanchoUser|BanchoChannel} recipient * @param {string} message */ constructor(banchojs, recipient, message) { this.banchojs = banchojs; this.recipient = recipient; this.message = message; } /** * Sends the prepared message to the recipient * * @throws {Error} If recipient isn't a valid type or if we're offline * @returns {Promise<null>} Resolves when message is sent (rate-limiting) */ send() { return new Promise((resolve, reject) => { this.banchojs.messagesQueue.push({ message: this, resolve, reject, }); if(this.banchojs.messagesQueue.length === 1) this.banchojs.processMessagesQueue(); }); } } module.exports = OutgoingBanchoMessage;