const IrcCommand = require("../IrcCommand");
const BanchoChannelMember = require("../BanchoChannelMember");
/**
* Join IRC command
* @description Received when we or someone joins a channel. Executes join callbacks if that's us.
* @extends {IrcCommand}
* @private
*/
class JoinCommand extends IrcCommand {
constructor() {
super();
}
/**
* Emits the JOIN event
*
* @fires BanchoClient#JOIN
* @param {BanchoClient} client
* @param {BanchoUser} user
* @param {BanchoChannel} channel
*/
emit(client, user, channel) {
const member = new BanchoChannelMember(client, channel, user.ircUsername);
channel.channelMembers.set(user.ircUsername, member);
if(user.isClient()) {
channel.joined = true;
if(channel.joinCallback != null)
channel.joinCallback();
}
/**
* Fired when a user has joined a channel
* @event BanchoClient#JOIN
* @type {BanchoChannelMember}
*/
client.emit("JOIN", member);
}
handleCommand(client, command, splits) {
const user = client.getUser((splits[0].split("!"))[0].substr(1));
const channel = client.getChannel(splits[2].substr(1));
this.emit(client, user, channel);
}
}
module.exports = JoinCommand;