diff --git a/src/channel/channel.js b/src/channel/channel.js index 45b09e4c..2134f231 100644 --- a/src/channel/channel.js +++ b/src/channel/channel.js @@ -401,6 +401,27 @@ Channel.prototype.joinUser = function (user, data) { }); }; + +Channel.prototype.getUserForName = function(name){ + var result; + var self = this; + for (var i = 0; i < self.users.length; i++) { + if (self.users[i].getLowerName() === name) { + result = self.users[i]; + break; + } + } + + return result; +}; + +Channel.prototype.setLeader = function(user, name){ + var self = this; + if("playlist" in self.modules){ + self.modules['playlist'].handleAssignLeader(user, {name: name}); + } +}; + Channel.prototype.acceptUser = function (user) { user.setFlag(Flags.U_IN_CHANNEL); user.socket.join(this.name); diff --git a/src/channel/chat.js b/src/channel/chat.js index 5e250513..8ff74ac4 100644 --- a/src/channel/chat.js +++ b/src/channel/chat.js @@ -48,6 +48,7 @@ function ChatModule(channel) { this.registerCommand("/a", this.handleCmdAdminflair.bind(this)); this.registerCommand("/afk", this.handleCmdAfk.bind(this)); this.registerCommand("/mute", this.handleCmdMute.bind(this)); + this.registerCommand("/leader", this.handleCmdLeader.bind(this)); this.registerCommand("/smute", this.handleCmdSMute.bind(this)); this.registerCommand("/unmute", this.handleCmdUnmute.bind(this)); this.registerCommand("/unsmute", this.handleCmdUnmute.bind(this)); @@ -535,6 +536,25 @@ ChatModule.prototype.handleCmdAdminflair = function (user, msg, meta) { ChatModule.prototype.handleCmdAfk = function (user, msg, meta) { user.setAFK(!user.is(Flags.U_AFK)); }; +ChatModule.prototype.handleCmdLeader = function (user, msg, meta) { + if (!this.channel.modules.permissions.canAssignLeader(user)) { + return; + } + + var args = msg.split(" "); + args.shift(); + + var name = args.shift(); + if (typeof name !== "string") { + user.socket.emit("errorMsg", { + msg: "/leader requires a target name" + }); + return; + } + name = name.toLowerCase(); + this.channel.setLeader(user, name); + this.channel.logger.log(`[mod] ${user.getName()} assigned leader to ${name}`); +}; ChatModule.prototype.handleCmdMute = function (user, msg, meta) { if (!this.channel.modules.permissions.canMute(user)) { @@ -554,14 +574,7 @@ ChatModule.prototype.handleCmdMute = function (user, msg, meta) { } name = name.toLowerCase(); - var target; - - for (var i = 0; i < this.channel.users.length; i++) { - if (this.channel.users[i].getLowerName() === name) { - target = this.channel.users[i]; - break; - } - } + var target = this.channel.getUserForName(name); if (!target) { user.socket.emit("errorMsg", { @@ -604,14 +617,7 @@ ChatModule.prototype.handleCmdSMute = function (user, msg, meta) { } name = name.toLowerCase(); - var target; - - for (var i = 0; i < this.channel.users.length; i++) { - if (this.channel.users[i].getLowerName() === name) { - target = this.channel.users[i]; - break; - } - } + var target = this.channel.getUserForName(name); if (!target) { user.socket.emit("errorMsg", { @@ -675,13 +681,7 @@ ChatModule.prototype.handleCmdUnmute = function (user, msg, meta) { this.channel.logger.log("[mod] " + user.getName() + " unmuted " + name); this.sendModMessage(user.getName() + " unmuted " + name, muteperm); - var target; - for (var i = 0; i < this.channel.users.length; i++) { - if (this.channel.users[i].getLowerName() === name) { - target = this.channel.users[i]; - break; - } - } + var target = this.channel.getUserForName(name); if (!target) { return;