const IrcCommand = require("../IrcCommand"); const PrivateMessage = require("../PrivateMessage"); const ChannelMessage = require("../ChannelMessage"); /** * Message IRC command * @description Received when a message is sent in either channels or PMs. * @fires BanchoClient#PM * @fires BanchoClient#CM * @extends {IrcCommand} * @private */ class MessageCommand extends IrcCommand { handleCommand(client, command, splits) { const user = client.getUser(splits[0].substr(1, splits[0].indexOf("!") - 1)); const message = splits.slice(3).join(" ").substr(1); if(splits[2].toLowerCase() == client.username.toLowerCase()) /** * Fired when a PM is received, or sent from us (check for the `self` property). * @event BanchoClient#PM * @type {PrivateMessage} */ client.emit("PM", new PrivateMessage(user, message, false, client.getSelf())); else if(splits[2].indexOf("#") === -1) /** * Fired when Bancho sends us back a PM that couldn't be sent. * As far as we know, only happens when a PM is rejected because the recipient blocks messages from non-friends. * @event BanchoClient#rejectedMessage * @type {PrivateMessage} */ client.emit("rejectedMessage", new PrivateMessage(client.getSelf(), message, true, client.getUser(splits[2]))); else /** * Fired when a channel message is received, or sent from us (check for the `self` property). * @event BanchoClient#CM * @type {ChannelMessage} */ client.emit("CM", new ChannelMessage(user, message, false, client.getChannel(splits[2]))); } } module.exports = MessageCommand;