private void SendCommandList(string sendto, string nick, IEnumerable <Commandlet> commandList) { if (!commandList.Any()) { return; } var commandStrings = new List <string>(); foreach (var commandlet in commandList) { if (string.IsNullOrEmpty(commandlet.AccessString)) { commandStrings.Add(scopeColor[commandlet.Scope] + commandlet.Command + IrcConstants.IrcColor + IrcConstants.IrcBold); } else if (Acl.Access(nick, commandlet.AccessString, false)) { commandStrings.Add(scopeColor[commandlet.Scope] + "<" + commandlet.Command + ">" + IrcConstants.IrcColor + IrcConstants.IrcBold); } } foreach (string com in commandStrings.ToLines(350, ", ", "Active Commands (" + scopeColor[CommandScope.Public] + "public" + IrcConstants.IrcColor + IrcConstants.IrcBold + ", " + scopeColor[CommandScope.Private] + "private" + IrcConstants.IrcColor + IrcConstants.IrcBold + ") <restricted>: ", null)) { SendMessage(SendType.Message, sendto, com); } }
private void CommandDispatcher(object sender, IrcEventArgs e) { var pub = !string.IsNullOrEmpty(e.Data.Channel); if (!commands.ContainsKey(e.Data.MessageArray[0])) { return; } if (pub && (commands[e.Data.MessageArray[0]].Scope == CommandScope.Private)) { SendMessage(SendType.Message, e.Data.Nick, "This command (" + commands[e.Data.MessageArray[0]].Command + ") can only be invoked privatly in a query."); return; } if ((!pub) && (commands[e.Data.MessageArray[0]].Scope == CommandScope.Public)) { SendMessage(SendType.Message, e.Data.Nick, "This command (" + commands[e.Data.MessageArray[0]].Command + ") can only be invoked publicly in a channel."); return; } // check if access to function is allowed if (!string.IsNullOrEmpty(commands[e.Data.MessageArray[0]].AccessString) && !Acl.Access(e.Data.Nick, commands[e.Data.MessageArray[0]].AccessString, true)) { return; } if ((commands[e.Data.MessageArray[0]].ChannelList != null) && (!commands[e.Data.MessageArray[0]].ChannelList.Contains(e.Data.Channel))) { return; } if (commands[e.Data.MessageArray[0]].Handler != null) { commands[e.Data.MessageArray[0]].Handler.Invoke(sender, e); } else { foreach (var plug in PlugManager.Plugins.Where(plug => plug.FullName == (string)commands[e.Data.MessageArray[0]].Owner)) { plug.InvokeHandler(commands[e.Data.MessageArray[0]].HandlerName, e); return; } } }