private bool ParseInfo(string[] code, string[] data) { if (code.Length > 3) { string name = code[4]; if (name == config.DebugChan && instance.Nick != core.irc.NickName) { return(true); } config.channel channel = core.getChannel(name); if (channel != null) { string[] _chan = data[2].Split(' '); foreach (var user in _chan) { string _user = user; char _UserMode = '\0'; if (_user.Length > 0) { foreach (char mode in core.irc.UChars) { if (_user[0] == mode) { _UserMode = user[0]; _user = _user.Substring(1); } } lock (channel.UserList) { User _u = channel.RetrieveUser(_user); if (_u == null && _user != "") { channel.UserList.Add(new User(user, "", "")); } else { if (_u != null) { _u.SymbolMode(_UserMode); } } } } } return(true); } } return(false); }
public void GetOp(config.channel chan) { if (!GetConfig(chan, "OP.Permanent", false)) { chan.instance.irc._SlowQueue.Send("CS op " + chan.Name, IRC.priority.high); return; } // get our user User user = chan.RetrieveUser(chan.instance.Nick); if (user == null) { chan.instance.irc._SlowQueue.Send("CS op " + chan.Name, IRC.priority.high); return; } if (!user.IsOperator) { chan.instance.irc._SlowQueue.Send("CS op " + chan.Name, IRC.priority.high); } }
private bool Mode(string source, string parameters, string value) { if (parameters.Contains(" ")) { string chan = parameters.Substring(0, parameters.IndexOf(" ")); chan = chan.Replace(" ", ""); string user = source; if (chan.StartsWith("#")) { if (chan == config.DebugChan && instance.Nick != core.irc.NickName) { return(true); } config.channel channel = core.getChannel(chan); if (channel != null) { string change = parameters.Substring(parameters.IndexOf(" ")); while (change.StartsWith(" ")) { change = change.Substring(1); } Formatter formatter = new Formatter(); while (change.EndsWith(" ") && change.Length > 1) { change = change.Substring(0, change.Length - 1); } // we get all the mode changes for this channel formatter.RewriteBuffer(change); foreach (SimpleMode m in formatter.getMode) { if (core.irc.CUModes.Contains(m.Mode) && m.ContainsParameter) { User flagged_user = channel.RetrieveUser(m.Parameter); if (flagged_user != null) { flagged_user.ChannelMode.ChangeMode("+" + m.Mode); } } } foreach (SimpleMode m in formatter.getRemovingMode) { if (core.irc.CUModes.Contains(m.Mode) && m.ContainsParameter) { User flagged_user = channel.RetrieveUser(m.Parameter); if (flagged_user != null) { flagged_user.ChannelMode.ChangeMode("-" + m.Mode); } } } return(true); } } } return(false); }