public override void Execute(IrcMessageData data) { int start = data.Message.IndexOf(Name, StringComparison.CurrentCultureIgnoreCase) + Name.Length + 1; if (data.Message.Length <= start) { plugin.Host.Reply(data, SendType.Message, "No such command"); return; } int end = data.Message.IndexOf(' ', start); if (end <= start) { end = data.Message.Length; if (end <= start) { plugin.Host.Reply(data, SendType.Message, "No such command"); return; } } string group = data.Message.Substring(start, end - start); if (plugin.GetCommandsAtGroup(group) == null) { plugin.Host.Reply(data, SendType.Message, "No account group '" + group + "' exists"); return; } plugin.RemoveAccountGroup(group); plugin.Host.Reply(data, SendType.Message, "Account group " + group + " deleted"); }
public override void Execute(IrcMessageData data) { int start = data.Message.IndexOf(Name, StringComparison.CurrentCultureIgnoreCase) + Name.Length + 1; if (data.Message.Length <= start) { plugin.Host.Reply(data, SendType.Message, "No such command"); return; } int end = data.Message.IndexOf(' ', start); if (end <= start) { end = data.Message.Length; if (end <= start) { plugin.Host.Reply(data, SendType.Message, "No account specified"); return; } } string account = data.Message.Substring(start, end - start); plugin.RemoveAccount(account); plugin.Host.Reply(data, SendType.Message, "Account deleted"); }
public override void Execute(IrcMessageData data) { int start = data.Message.IndexOf(Name, StringComparison.CurrentCultureIgnoreCase) + 2; if (data.Message.Length <= start) { plugin.Host.Reply(data, SendType.Message, "No such command"); return; } int end = data.Message.IndexOf(' '); if (end <= start) { end = data.Message.Length; if (end <= start) { plugin.Host.Reply(data, SendType.Message, "No such command"); return; } } string command = data.Message.Substring(start, end - start).ToLower(); Type[] types = System.Reflection.Assembly.GetExecutingAssembly().GetTypes(); //grab and add given command }
public override void Execute(IrcMessageData data) { int start = data.Message.IndexOf(Name, StringComparison.CurrentCultureIgnoreCase) + Name.Length + 1; if (data.Message.Length <= start) { plugin.Host.Reply(data, SendType.Message, "No such command"); return; } int end = data.Message.IndexOf(' ', start); if (end <= start) { end = data.Message.Length; if (end <= start) { plugin.Host.Reply(data, SendType.Message, "No account group specified"); return; } } string group = data.Message.Substring(start, end - start); var members = plugin.GetAccountMembers(group); StringBuilder msg = new StringBuilder("Members: "); for (int i = 0; i < members.Length; i++) { msg.Append(members[i]); if (i + 1 < members.Length) msg.Append(", "); } plugin.Host.Reply(data, SendType.Message, msg.ToString()); }
private string AddPlayer(IrcMessageData msg) { string res; string sender = RealName(msg.From).ToLower(); if (sender == "voodoohood") { if(msg.MessageArray.Length >= 2) { string userToAdd = msg.MessageArray[1].ToLower(); bool playerAlreadyRegistered = _database.isUserRegistered(userToAdd); if (!playerAlreadyRegistered) { _database.addPlayerToCraftWar(userToAdd); res = "User " + userToAdd + " added to the registered players ."; DumberLogger.Log(" CraftWarComp: Added user" + userToAdd + " to database, is registered " + _database.isUserRegistered(userToAdd)); } else { res = "User " + userToAdd + " is already registered"; } } else { res = null; DumberLogger.Log(" CraftWarComp: Format of the message wasnt correct"); } } else { res = null; DumberLogger.Log(" CraftWarComp: User other than voodoohood tryed to add a user"); } return res; }
public bool OnReadLine(IrcMessageData data) { if ((data.Type != ReceiveType.ChannelMessage) && (data.Type != ReceiveType.QueryMessage)) return true; if ((data.MessageArray.Length > 1) && ((data.MessageArray[0].ToLower() == "!nick") || (data.MessageArray[0].ToLower() == "!name"))) { _irc.RfcNick(data.MessageArray[1]); return true; } if ((data.Type == ReceiveType.ChannelMessage) && (data.MessageArray[0] == "!help")) { DisplayHelp(data); return true; } if (data.Type != ReceiveType.QueryMessage) return true; if (data.MessageArray.Length > 0) { _irc.SendMessage(SendType.Message, Admin._channel, data.Message); Console.WriteLine(data.Nick + " " + data.Message); } return true; }
public static BanInfo Parse(IrcMessageData data) { BanInfo info = new BanInfo(); // :magnet.oftc.net 367 meebey #smuxi test!test@test [email protected] 1216309801.. info.f_Channel = data.RawMessageArray[3]; info.f_Mask= data.RawMessageArray[4]; return info; }
private void ParseForLink(IrcMessageData data) { CheckLinkDate(); _links.AddRange(data.MessageArray.Where(word => (!_links.Contains(word)) && (Uri.IsWellFormedUriString(word, UriKind.Absolute)) && ((word.StartsWith("http")) || (word.StartsWith("www"))) )); }
public override bool Check(IrcMessageData msg) { Boolean res = false; string com = msg.MessageArray[0]; for (int i = 0; i < commands.Length; i++) { if (com == commands[i]) res = true; } return res; }
private string Disconnect(IrcMessageData msg) { string sender = RealName(msg.From).ToLower(); bool isSenderDev = sender == "voodoohood" || sender == "n1ghtsh0ck"; if (isSenderDev) { Environment.Exit(0); } return null; }
protected IrcEventArgs CreateCtcpEventArgs(string aChannel, string aBot, string aMessage, ReceiveType aType, string aCtcpCommand) { IrcMessageData data = new IrcMessageData(null, "", aBot, "", "", aChannel, aMessage, aMessage, aType, ReplyCode.Null); CtcpEventArgs args = (CtcpEventArgs)System.Runtime.Serialization.FormatterServices.GetUninitializedObject(typeof(CtcpEventArgs)); FieldInfo[] EventFields = typeof(IrcEventArgs).GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly); EventFields[0].SetValue(args, data); FieldInfo[] EventFields2 = typeof(CtcpEventArgs).GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly); EventFields2[0].SetValue(args, aCtcpCommand); return args; }
public override void Execute(IrcMessageData data) { var groups = plugin.GetAccountGroups(); StringBuilder msg = new StringBuilder("Existing groups: "); for (int i = 0; i < groups.Length; i++) { msg.Append(groups[i]); if (i + 1 < groups.Length) msg.Append(", "); } plugin.Host.Reply(data, SendType.Message, msg.ToString()); }
public override string Handle(IrcMessageData msg) { string res = null; string com = msg.MessageArray[0]; switch (com) { case "#gamba": res = Gamba(msg); break; } return res; }
public override string Handle(IrcMessageData msg) { string res = null; string com = msg.MessageArray[0]; switch (com) { case "#disconnect": Disconnect(msg); break; default: break; } return res; }
private string StartRoulette(IrcMessageData msg) { string res = null; string sender = RealName(msg.From).ToLower(); if(sender == "voodoohood") { _rouletteActive = true; res = "Roulette started place your bets , you have 1 minute time. Use #placebet <0-36> <1-10000> to place a bet"; Thread rouletteThread = new Thread(RouletteThreadTask); _bets = new List<bet>(); rouletteThread.Start(); } return res; }
public bool OnReadLine(IrcMessageData data) { if (data.Type != ReceiveType.ChannelMessage) return true; if ((data.MessageArray[0] == "!rainbow") || (data.MessageArray[0] == "!r")) Fabulise(data); if ((data.MessageArray[0] == "!doublerainbow") || (data.MessageArray[0] == "!dr")) { Fabulise(data); Fabulise(data); } if (data.MessageArray[0] == "!help") DisplayHelp(data); return true; }
public override string Handle(IrcMessageData msg) { string res; string com = msg.MessageArray[0]; switch (com) { case "#startRoulette": res = StartRoulette(msg); break; case "#placebet": res = AddBet(msg); break; default: res = null; break; } return res; }
public bool OnReadLine(IrcMessageData data) { if ((data.Type != ReceiveType.ChannelMessage) || (_ignore.Contains(data.Nick))) return true; if ((data.MessageArray.Length > 0) && (data.MessageArray[0] == "!links")) DisplayLinks(data.Nick); if (data.MessageArray[0] == "!help") DisplayHelp(data); if ((data.MessageArray.Length > 0) && (data.Message.Trim().StartsWith("!"))) return true; ParseForLink(data); return true; }
public override void Execute(IrcMessageData data) { int start = data.Message.IndexOf(Name, StringComparison.CurrentCultureIgnoreCase) + Name.Length + 1; if (data.Message.Length <= start) { plugin.Host.Reply(data, SendType.Message, "No such command"); return; } int end = data.Message.IndexOf(' ', start); if (end <= start) { end = data.Message.Length; if (end <= start) { plugin.Host.Reply(data, SendType.Message, "No account specified"); return; } } string account = data.Message.Substring(start, end - start); start = end + 1; end = data.Message.IndexOf(' ', start); if (end <= start) { end = data.Message.Length; if (end <= start) { plugin.Host.Reply(data, SendType.Message, "No account group specified"); return; } } string group = data.Message.Substring(start, end - start); if (plugin.GetCommandsAtGroup(group) == null) { plugin.Host.Reply(data, SendType.Message, "No account group named " + group); return; } plugin.AddAccount(account, group); plugin.Host.Reply(data, SendType.Message, string.Format("Account '{0}' successfully created", account, group)); }
public bool OnReadLine(IrcMessageData data) { if (data.Type != ReceiveType.ChannelMessage) return true; if (data.MessageArray[0] == "!help") DisplayHelp(data); if (data.MessageArray.Length < 2) return true; if ((data.MessageArray[0] == "!big") || (data.MessageArray[0] == "!b")) Embiggen(data.Message.Split(null, 2)[1], false, data.Channel, data.Ident, data.Host); if ((data.MessageArray[0] == "!bigrainbow") || (data.MessageArray[0] == "!br")) Embiggen(data.Message.Split(null, 2)[1], true, data.Channel, data.Ident, data.Host); return true; }
public override void Execute(IrcMessageData data) { int start = data.Message.IndexOf(Name, StringComparison.CurrentCultureIgnoreCase) + Name.Length + 1; if (data.Message.Length <= start) { StringBuilder msg = new StringBuilder("Supported commands: "); for (int i = 0; i < Command.AllCommands.Length; i++) { msg.Append(Command.AllCommands[i].Name); if (i + 1 < Command.AllCommands.Length) msg.Append(", "); } plugin.Host.Reply(data, SendType.Message, msg.ToString()); return; } int end = data.Message.IndexOf(' ', start); if (end <= start) { end = data.Message.Length; if (end <= start) { StringBuilder msg = new StringBuilder("Supported commands: "); for (int i = 0; i < Command.AllCommands.Length; i++) { msg.Append(Command.AllCommands[i].Name); if (i + 1 < Command.AllCommands.Length) msg.Append(", "); } plugin.Host.Reply(data, SendType.Message, msg.ToString()); return; } } string command = data.Message.Substring(start, end - start); var cmd = Command.GetCommand(command); if (cmd == null) plugin.Host.Reply(data, SendType.Message, "No such command"); else plugin.Host.Reply(data, SendType.Message, cmd.Help); }
public override string Handle(IrcMessageData msg) { string res; string com = msg.MessageArray[0]; switch (com) { case "#attack": res = Attack(msg); break; case "#stats": res = Stats(msg); break; case "#commands": res = GetCommands(); break; case "#upgrade": res = UpgradeMine(msg); break; case "#buildBarracks": res = BuildBarracks(msg); break; case "#buildUnits": res = BuildUnits(msg); break; case "#add": res = AddPlayer(msg); break; case "#maxupgrade": res = Maxupgrade(msg); break; case "#maxunits": res = MaxUnits(msg); break; default: res = null; break; } return res; }
private string AddBet(IrcMessageData msg) { string res = null; string sender = RealName(msg.From).ToLower(); bool isRegistered = _database.isUserRegistered(sender); if (isRegistered&&_rouletteActive) { DumberLogger.Log(" Casino: try to add bett / Roulette started / User is registered"); bool messageCorrectLength = msg.MessageArray.Length>=3; if (messageCorrectLength) { DumberLogger.Log(" Casino: The Bet add call has the correct length"); string numberS = msg.MessageArray[1]; long number = (long)Convert.ToDouble(numberS); string valueS = msg.MessageArray[2]; long value = (long)Convert.ToDouble(valueS); bool rangeMax = number < 37; bool rangeMin = number >= 0; bool maxBet = value < 10000; bool minBet = value > 0; bool userHasEnoughGold = value <= _database.selectGold(sender); bool userHasAlreadyTooMuchOnTheTable = checkBets(sender); DumberLogger.Log(" Casino: " + number + " " + value + " " + rangeMax + " " + rangeMin + " " + maxBet + " " + minBet + " " + userHasEnoughGold + " " + userHasAlreadyTooMuchOnTheTable); if (rangeMax && rangeMin && maxBet && minBet && userHasEnoughGold&&userHasAlreadyTooMuchOnTheTable) { DumberLogger.Log(" Casino: range ok / max and min bet ok / the user has enough gold / doesn have too much on the table"); bet userBet = new bet(sender, (int)number, (int)value); _bets.Add(userBet); int usersGold = _database.selectGold(sender); _database.updateGold(sender, usersGold - (int)value); res = sender + " your bet of " + value + " gold on number " + number + " has been confirmed"; } } } return res; }
public bool OnReadLine(IrcMessageData data) { if ((data.Type != ReceiveType.QueryMessage) || (!IsAuth(data.Nick, data.MessageArray[0]))) return true; if (data.MessageArray[1].ToLower() == "join") { if (data.MessageArray.Length == 2) Join(_channel); else Join(data.MessageArray[2]); } if (data.MessageArray[1].ToLower() == "part") { if (data.MessageArray.Length == 1) Part(_channel); else Part(data.MessageArray[2]); } if ((data.MessageArray[1].ToLower() == "quit") || (data.MessageArray[1].ToLower() == "exit")) Quit(); return false; }
internal NickChangeEventArgs(IrcMessageData data, string oldnick, string newnick) : base(data) { _OldNickname = oldnick; _NewNickname = newnick; }
internal AwayEventArgs(IrcMessageData data, string who, string awaymessage) : base(data) { _Who = who; _AwayMessage = awaymessage; }
internal ActionEventArgs(IrcMessageData data, string actionmsg) : base(data, "ACTION", actionmsg) { _ActionMessage = actionmsg; }
internal BanEventArgs(IrcMessageData data, string channel, string who, string hostmask) : base(data) { Channel = channel; Who = who; Hostmask = hostmask; }
internal DevoiceEventArgs(IrcMessageData data, string channel, string who, string whom) : base(data, channel, who, whom) { }
internal ChannelAdminEventArgs(IrcMessageData data, string channel, string who, string whom) : base(data, channel, who, whom) { }
internal UnbanEventArgs(IrcMessageData data, string channel, string who, string hostmask) : base(data) { _Channel = channel; _Who = who; _Hostmask = hostmask; }
internal MotdEventArgs(IrcMessageData data, string motdmsg) : base(data) { _MotdMessage = motdmsg; }
internal ChannelModeChangeEventArgs(IrcMessageData data, string channel, List <ChannelModeChangeInfo> modeChanges) : base(data) { Channel = channel; ModeChanges = modeChanges; }
public static WhoInfo Parse(IrcMessageData data) { var whoInfo = new WhoInfo { // :fu-berlin.de 352 meebey_ * ~meebey e176002059.adsl.alicedsl.de fu-berlin.de meebey_ H :0 Mirco Bauer.. Channel = data.RawMessageArray[3], Ident = data.RawMessageArray[4], Host = data.RawMessageArray[5], Server = data.RawMessageArray[6], Nick = data.RawMessageArray[7] }; // HACK: realname field can be empty on bugged IRCds like InspIRCd-2.0 // :topiary.voxanon.net 352 Mirco #anonplusradio CpGc igot.avhost Voxanon CpGc H if (data.MessageArray == null || data.MessageArray.Length < 2) { whoInfo.Realname = ""; } else { string hopcountStr = data.MessageArray[0]; if (Int32.TryParse(hopcountStr, out int hopcount)) { whoInfo.HopCount = hopcount; } else { #if LOG4NET Logger.MessageParser.Warn("Parse(): couldn't parse hopcount (as int): '" + hopcountStr + "'"); #endif } // skip hop count whoInfo.Realname = String.Join(" ", data.MessageArray, 1, data.MessageArray.Length - 1); } string usermode = data.RawMessageArray[8]; bool owner = false; bool chanadmin = false; bool op = false; bool halfop = false; bool voice = false; bool ircop = false; bool away = false; bool registered = false; int usermodelength = usermode.Length; for (int i = 0; i < usermodelength; i++) { switch (usermode[i]) { case 'H': away = false; break; case 'G': away = true; break; case '~': owner = true; break; case '&': chanadmin = true; break; case '@': op = true; break; case '%': halfop = true; break; case '+': voice = true; break; case '*': ircop = true; break; case 'r': registered = true; break; } } whoInfo.IsAway = away; whoInfo.IsOwner = owner; whoInfo.IsChannelAdmin = chanadmin; whoInfo.IsOp = op; whoInfo.IsHalfop = halfop; whoInfo.IsVoice = voice; whoInfo.IsIrcOp = ircop; whoInfo.IsRegistered = registered; return(whoInfo); }
public void SendReply(IrcMessageData data, string message) => SendReply(data, message, Priority.Medium);
internal JoinEventArgs(IrcMessageData data, string channel, string who) : base(data) { Channel = channel; Who = who; }
internal TopicEventArgs(IrcMessageData data, string channel, string topic) : base(data) { _Channel = channel; _Topic = topic; }
internal CtcpEventArgs(IrcMessageData data, string ctcpcmd, string ctcpparam) : base(data) { _CtcpCommand = ctcpcmd; _CtcpParameter = ctcpparam; }
internal TopicChangeEventArgs(IrcMessageData data, string channel, string who, string newtopic) : base(data) { _Channel = channel; _Who = who; _NewTopic = newtopic; }
internal ErrorEventArgs(IrcMessageData data, string errormsg) : base(data) { _ErrorMessage = errormsg; }
internal ChannelRoleChangeEventArgs(IrcMessageData data, string channel, string who, string whom) : base(data) { Channel = channel; Who = who; Whom = whom; }
internal DevoiceEventArgs(IrcMessageData data, string channel, string who, string whom) : base(data) { _Channel = channel; _Who = who; _Whom = whom; }
internal QuitEventArgs(IrcMessageData data, string who, string quitmessage) : base(data) { _Who = who; _QuitMessage = quitmessage; }
internal BounceEventArgs(IrcMessageData data, string server, int port) : base(data) { Server = server; Port = Port; }
internal IrcEventArgs(IrcMessageData data) { this._Data = data; }
void DownloadXdccReady(object aSender, EventArgs<Server, string> aEventArgs) { string file = CalculateXdccListFileName(aEventArgs.Value1, aEventArgs.Value2); var lines = System.IO.File.ReadAllLines(file); FileSystem.DeleteFile(file); var connection = _connections.FirstOrDefault(c => c.Server == aEventArgs.Value1); if (connection != null) { Model.Domain.Channel tChan = null; var user = connection.Client.GetIrcUser(aEventArgs.Value2); if (user != null) { foreach (string channel in user.JoinedChannels) { tChan = aEventArgs.Value1.Channel(channel); if (tChan != null) { break; } } } if (tChan == null) { _log.Error(".DownloadXdccReady(" + aEventArgs.Value2 + ") cant find channel"); return; } foreach (var line in lines) { IrcMessageData data = new IrcMessageData(connection.Client, "", aEventArgs.Value2, "", "", tChan.Name, line, line, ReceiveType.QueryNotice, ReplyCode.Null); // damn internal contructors... // uhh, this is evil - dont try this @ home kids! IrcEventArgs args = (IrcEventArgs)System.Runtime.Serialization.FormatterServices.GetUninitializedObject(typeof(IrcEventArgs)); FieldInfo[] EventFields = typeof(IrcEventArgs).GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly); EventFields[0].SetValue(args, data); _parser.Parse(connection, args); } } else { _log.Error(".DownloadXdccReady(" + aEventArgs.Value2 + ") cant find connection"); } }
internal PingEventArgs(IrcMessageData data, string pingdata) : base(data) { _PingData = pingdata; }
internal InviteEventArgs(IrcMessageData data, string channel, string who) : base(data) { _Channel = channel; _Who = who; }
internal PartEventArgs(IrcMessageData data, string channel, string who, string partmessage) : base(data) { _Channel = channel; _Who = who; _PartMessage = partmessage; }
internal WhoEventArgs(IrcMessageData data, WhoInfo whoInfo) : base(data) { f_WhoInfo = whoInfo; }
internal PongEventArgs(IrcMessageData data, TimeSpan lag) : base(data) { _Lag = lag; }
public static WhoInfo Parse(IrcMessageData data) { WhoInfo whoInfo = new WhoInfo(); // :fu-berlin.de 352 meebey_ * ~meebey e176002059.adsl.alicedsl.de fu-berlin.de meebey_ H :0 Mirco Bauer.. whoInfo.f_Channel = data.RawMessageArray[3]; whoInfo.f_Ident = data.RawMessageArray[4]; whoInfo.f_Host = data.RawMessageArray[5]; whoInfo.f_Server = data.RawMessageArray[6]; whoInfo.f_Nick = data.RawMessageArray[7]; // skip hop count whoInfo.f_Realname = String.Join(" ", data.MessageArray, 1, data.MessageArray.Length - 1); int hopcount = 0; string hopcountStr = data.MessageArray[0]; try { hopcount = int.Parse(hopcountStr); } catch (FormatException ex) { #if LOG4NET Logger.MessageParser.Warn("Parse(): couldn't parse (as int): '" + hopcountStr + "'", ex); #endif } string usermode = data.RawMessageArray[8]; bool op = false; bool voice = false; bool ircop = false; bool away = false; int usermodelength = usermode.Length; for (int i = 0; i < usermodelength; i++) { switch (usermode[i]) { case 'H': away = false; break; case 'G': away = true; break; case '@': op = true; break; case '+': voice = true; break; case '*': ircop = true; break; } } whoInfo.f_IsAway = away; whoInfo.f_IsOp = op; whoInfo.f_IsVoice = voice; whoInfo.f_IsIrcOp = ircop; return(whoInfo); }
internal NamesEventArgs(IrcMessageData data, string channel, string[] userlist, string[] rawUserList) : base(data) { _Channel = channel; _UserList = userlist; RawUserList = rawUserList; }
internal ListEventArgs(IrcMessageData data, ChannelInfo listInfo) : base(data) { f_ListInfo = listInfo; }
public static void Reply(this IPluginHost host, IrcMessageData replyTo, SendType type, string message) { host.SendMessage(type, replyTo.Channel ?? replyTo.Ident, replyTo.Channel == null ? message : string.Concat(replyTo.Nick, ": ", message)); }
public IrcEventArgs(IrcMessageData data) { _Data = data; }