public override async Task <bool> HandleLine(IrcMessage parsedLine) { var pong = parsedLine.OriginalMessage.Replace("PING", "PONG"); Irc.WriteLine(pong); return(true); }
void Bot_OnMessage(Network n, Irc.IrcEventArgs e) { if (IsMatch("^log \\?$", e.Data.Message)) { AnswerWithNotice(n, e, FormatBold("Use of Log plugin:")); AnswerWithNotice(n, e, "No remote commands available. Every IRC command gets logged in its raw form to a file in the \\Data subdirectory."); } }
internal bool TryResume(CtcpEventArgs e) { if (User == e.Data.Nick) { if ((e.Data.MessageArray.Length > 4) && (_Filename == e.Data.MessageArray[2].Trim(new char[] { '\"' }))) { long offset = 0; long.TryParse(FilterMarker(e.Data.MessageArray[4]), out offset); if (_File.CanSeek) { if (e.Data.MessageArray.Length > 5) { Irc.SendMessage(SendType.CtcpRequest, e.Data.Nick, "DCC ACCEPT " + e.Data.MessageArray[2] + " " + e.Data.MessageArray[3] + " " + e.Data.MessageArray[4] + " " + FilterMarker(e.Data.MessageArray[5])); } else { Irc.SendMessage(SendType.CtcpRequest, e.Data.Nick, "DCC ACCEPT " + e.Data.MessageArray[2] + " " + e.Data.MessageArray[3] + " " + FilterMarker(e.Data.MessageArray[4])); } _File.Seek(offset, SeekOrigin.Begin); _SentBytes = offset; return(true); } else { Irc.SendMessage(SendType.CtcpRequest, e.Data.Nick, "ERRMSG DCC File not seekable"); } } } return(false); }
private void ShowToast(string title, string message) { var toast = Irc.CreateBasicToast(title, message); var toastNotifier = ToastNotificationManager.CreateToastNotifier(); toastNotifier.Show(toast); }
void Start() { ircProtocol = GetComponent<Irc>(); ircProtocol.controller = this; ircProtocol.enabled = true; _IrcGui.Show(this); }
void Bot_OnRawMessage(Network network, Irc.IrcEventArgs e) { DateTime d = DateTime.Now; System.IO.StreamWriter writer = new System.IO.StreamWriter("Logs\\" + d.Year + "." + d.Month + "." + d.Day + ".log", true); writer.WriteLine(((TimeSpan)(DateTime.Now - new DateTime(1970, 1, 1))).TotalMilliseconds.ToString() + " " + e.Data.RawMessage); writer.Close(); }
void Start() { ircProtocol = GetComponent <Irc>(); ircProtocol.controller = this; ircProtocol.enabled = true; _IrcGui.Show(this); }
public CommandManager(Irc irc) { this.Server = irc; RegisterCommand("/help", new HelpCommand()); RegisterCommand("/me", new MeCommand()); RegisterCommand("/join", new JoinCommand()); RegisterCommand("/part", new PartCommand()); RegisterCommand("/quit", new QuitCommand()); RegisterCommand("/query", new QueryCommand()); RegisterCommand("/nick", new NickCommand()); RegisterCommand("/msg", new MsgCommand()); RegisterCommand("/topic", new TopicCommand()); RegisterCommand("/whois", new WhoisCommand()); RegisterCommand("/list", new ListCommand()); RegisterCommand("/mode", new ModeCommand()); RegisterCommand("/op", new OpCommand()); RegisterCommand("/deop", new OpCommand()); RegisterCommand("/voice", new VoiceCommand()); RegisterCommand("/devoice", new VoiceCommand()); RegisterCommand("/mute", new QuietCommand()); RegisterCommand("/unmute", new QuietCommand()); RegisterCommand("/kick", new KickCommand()); RegisterCommand("/ban", new BanCommand()); RegisterCommand("/raw", new RawCommand()); }
public void Start() { Irc.Connect(Address, Port); Irc.Login("FPGitBot", "FPGitBot", 0, "FPGitBot"); Irc.RfcJoin(Channel); new Thread(o => ((IrcClient)o).Listen()).Start(Irc); }
public override async Task <bool> HandleLine(IrcMessage parsedLine) { // handle messages to this irc client var destination = parsedLine.CommandMessage.Parameters[0]; var reciever = parsedLine.CommandMessage.Parameters[1]; var content = parsedLine.TrailMessage.TrailingContent; if (!Irc.ChannelList.Contains(destination)) { await Irc.AddChannel(destination); } var msg = new Message(); msg.Type = MessageType.Info; if (reciever == Irc.Server.Username) { msg.User = parsedLine.PrefixMessage.Nickname; msg.Text = "kicked you from the channel: " + content; } else { msg.User = parsedLine.PrefixMessage.Nickname; msg.Text = string.Format("kicked {0} from the channel: {1}", reciever, content); } Irc.AddMessage(destination, msg); return(true); }
private void Update(object sender, EventArgs e) { foreach (var name in _feeds.Keys) { var feed = _feeds[name]; try { foreach (var item in feed.CatchUp()) { string output = string.Format("[{0}] {1}", name, item.Title.StripHtml()); foreach (var chan in Channels.CurrentChannels) { foreach (var s in output.WordBreak(LineLength)) { Irc.PrivateMessage(new IrcTarget(chan), s); } } while (_allItems.Count >= MaxItems) { _allItems.RemoveFirst(); } _allItems.AddLast(item); } } catch (Exception ex) { this.WriteTraceMessage(string.Format("Error polling RSS feed \"{0}\":\n{1}", name, ex.ToString())); } } }
public override void RunCommand(string channel, string[] args) { if ((args.Length < 3) || (args.Length > 2 && !args[1].StartsWith("#"))) { ClientMessage(channel, "Command too short!"); return; } var modeLine = "MODE "; if (args[1].StartsWith("#")) { modeLine += args[1] + " " + args[2]; if (args.Length == 4) { modeLine += " " + args[3]; } } else { modeLine += channel + " " + args[1]; if (args.Length == 3) { modeLine += " " + args[2]; } } Irc.WriteLine(modeLine); }
public Irc GetResult() { Irc irc = new Irc(); string[] result = input.Split(); for (int i = 0; i < result.Length; i++) { string[] FieldValue = result[i].Split('='); switch (FieldValue[0]) { case "MAXTARGETS": irc.maxTargets = Convert.ToInt32(FieldValue[1]); break; case "WALLCHOPS": irc.wallChops = true; break; case "CHANTYPES": irc.chanTypes = FieldValue[1]; break; } } return(irc); }
public Main() { _game = new GameLoop(this); _irc = new Irc(botName, botOauth, new string[] { chatMain, chatMods }, new DragonChat(this)); _game.Run(); }
internal void HandleCommand(Irc irc, string text) { string[] args = text.Split(' '); if (args[0].StartsWith("//") || !args[0].StartsWith("/")) { if (args[0].StartsWith("//")) { args[0] = args[0].Replace("//", "/"); } irc.SendMessage(String.Join(" ", args)); } else if (args[0].StartsWith("/")) { var cmd = CommandList.Where(command => command.StartsWith(args[0])).ToList(); if (cmd.Count > 1) { irc.ClientMessage("Multiple matches found: " + args[0]); irc.ClientMessage(String.Join(", ", cmd)); irc.ClientMessage("Type /help for a list of commands."); return; } else if (cmd.Count == 1) { ((Command)CommandTable[cmd[0]])(irc, args); } else { irc.ClientMessage("Unknown Command: " + text); irc.ClientMessage("Type /help for a list of commands."); } } }
public float TimeSpent(CommunicationMediums messageType, bool send, byte randomLevelValue) { switch (messageType) { case CommunicationMediums.Irc: return(send ? Irc.CostToSend(randomLevelValue) : Irc.CostToReceive(randomLevelValue)); case CommunicationMediums.Email: return(send ? Email.CostToSend(randomLevelValue) : Email.CostToReceive(randomLevelValue)); case CommunicationMediums.Phone: return(send ? Phone.CostToSend(randomLevelValue) : Phone.CostToReceive(randomLevelValue)); case CommunicationMediums.Meeting: return(send ? Meeting.CostToSend(randomLevelValue) : Meeting.CostToReceive(randomLevelValue)); case CommunicationMediums.FaceToFace: return(send ? FaceToFace.CostToSend(randomLevelValue) : FaceToFace.CostToReceive(randomLevelValue)); case CommunicationMediums.ViaAPlatform: return(send ? Platform.CostToSend(randomLevelValue) : Platform.CostToReceive(randomLevelValue)); case CommunicationMediums.System: return(0); default: throw new NotImplementedException(); } }
/// <summary> /// Accept an incoming Chatrequest, returns false if anything but a Connect happens /// </summary> /// <returns></returns> public bool AcceptRequest() { if (isConnected) { return(false); } try { if (RemoteEndPoint.Port == 0) { DccServer = new TcpListener(new IPEndPoint(IPAddress.Any, 0)); DccServer.Start(); LocalEndPoint = (IPEndPoint)DccServer.LocalEndpoint; Irc.SendMessage(SendType.CtcpRequest, User, "DCC CHAT chat " + HostToDccInt(ExternalIPAdress).ToString() + " " + LocalEndPoint.Port); } else { Connection = new TcpClient(); Connection.Connect(RemoteEndPoint); isConnected = true; } return(true); } catch (Exception) { isValid = false; isConnected = false; return(false); } }
void Bot_OnMessage(Network network, Irc.IrcEventArgs e) { if (IsMatch("^seen \\?$", e.Data.Message)) { AnswerWithNotice(network, e, FormatBold("Use of Seen plugin:")); AnswerWithNotice(network, e, FormatItalic("seen <nick>") + " - Displays information when the Bot last saw <nick>."); } else if (IsMatch("^seen (?<nick>.*)$", e.Data.Message)) { SeenInfo i = FindName(network.Name, Matches["nick"].ToString(), l); if (i == null) Answer(network, e, "I never saw " + Matches["nick"].ToString() + " before."); else if (i.Ident == e.Data.Ident) Answer(network, e, "Looking for yourself, eh?"); else { string hour = "hours"; string minute = "minutes"; TimeSpan t = (TimeSpan)(DateTime.Now - i.Date); if (t.TotalHours == 1) hour = "hour"; if (t.Minutes == 1) minute = "minute"; Answer(network, e, "I saw " + Matches["nick"].ToString() + " " + Convert.ToInt16(t.TotalHours).ToString() + " " + hour + " and " + t.Minutes.ToString() + " " + minute + " ago, " + i.Text + "."); } } NewSeen(network.Name, e.Data.Nick, e.Data.Ident, "on " + e.Data.Channel + ", saying " + e.Data.Message); }
public override async Task <bool> HandleLine(IrcMessage parsedLine) { if (Irc.ChannelList.ServerLog == null) { await Irc.AddChannel("Server"); } if (parsedLine.PrefixMessage.IsUser && parsedLine.PrefixMessage.Nickname == Irc.Nickname) { Irc.Server.Username = parsedLine.TrailMessage.HasTrail ? parsedLine.TrailMessage.TrailingContent : Irc.Nickname; } else if (parsedLine.PrefixMessage.IsUser && parsedLine.TrailMessage.HasTrail) { var username = parsedLine.PrefixMessage.Nickname; foreach (var channel in Irc.ChannelList) { var users = channel.Store; if (users.HasUser(username)) { var msg = new Message { Type = MessageType.JoinPart, User = parsedLine.PrefixMessage.Nickname, Text = string.Format("({0}) {1} {2}", parsedLine.PrefixMessage.Prefix, "changed nick to", parsedLine.TrailMessage.TrailingContent) }; Irc.AddMessage(channel.Name, msg); users.RemoveUser(username); users.AddUser(parsedLine.TrailMessage.TrailingContent); } } } return(true); }
public override async Task <bool> HandleLine(IrcMessage parsedLine) { var channel = parsedLine.TrailMessage.TrailingContent; if (parsedLine.PrefixMessage.Nickname == Irc.Server.Username) { await Irc.AddChannel(channel); } if (parsedLine.CommandMessage.Parameters != null) { channel = parsedLine.CommandMessage.Parameters[0]; } var msg = new Message { Type = MessageType.JoinPart, User = parsedLine.PrefixMessage.Nickname, Text = string.Format("({0}) {1}", parsedLine.PrefixMessage.Prefix, "joined the channel") }; Irc.AddMessage(channel, msg); Irc.ChannelList[channel].Store.AddUser(parsedLine.PrefixMessage.Nickname); return(true); }
internal void ModeCommandHandler(Irc irc, string[] args) { if ((args.Length < 3) || (args.Length > 2 && !args[1].StartsWith("#"))) { irc.ClientMessage("Command too short!"); return; } var modeLine = "MODE "; if (args[1].StartsWith("#")) { modeLine += args[1] + " " + args[2]; if (args.Length == 4) { modeLine += " " + args[3]; } } else { modeLine += irc.currentChannel + " " + args[1]; if (args.Length == 3) { modeLine += " " + args[2]; } } Debug.WriteLine(modeLine); irc.WriteLine(modeLine); }
public override async Task <bool> HandleLine(IrcMessage parsedLine) { if (parsedLine.CommandMessage.Command == "353") { var channel = parsedLine.CommandMessage.Parameters[2]; var list = parsedLine.TrailMessage.TrailingContent.Split(' ').ToList(); if (!_namesTable.ContainsKey(channel)) { _namesTable.Add(channel, list); } else { _namesTable[channel].AddRange(list); } } else if (parsedLine.CommandMessage.Command == "366") { var channel = parsedLine.CommandMessage.Parameters[1]; if (!Irc.ChannelList.Contains(channel)) { await Irc.AddChannel(channel); } Irc.ChannelList[channel].Store.ReplaceUsers(_namesTable[channel]); _namesTable.Remove(channel); } return(true); }
void Bot_OnMessage(Network n, Irc.IrcEventArgs e) { if (IsMatch("^autoop \\?$", e.Data.Message)) { AnswerWithNotice(n, e, FormatBold("Use of AutoOp plugin:")); AnswerWithNotice(n, e, "No remote commands available. All configuration has to be done manually in the Configuration.xml."); } }
public override Task <bool> HandleLine(IrcMessage parsedLine) { var cmd = parsedLine.CommandMessage.Command; if (cmd == "375") { _currentMOTD = parsedLine.TrailMessage.TrailingContent + "\r\n"; } if (cmd == "372") { _currentMOTD += parsedLine.TrailMessage.TrailingContent + "\r\n"; } if (cmd == "376" || cmd == "422") { _currentMOTD += parsedLine.TrailMessage.TrailingContent; var msg = new Message { Text = _currentMOTD, Type = MessageType.MOTD }; Irc.AddMessage("", msg); Irc.MOTD = _currentMOTD; _currentMOTD = ""; } return(Task.FromResult(true)); }
public HandlerManager(Irc irc) { this.Server = irc; this.DefaultHandler = new DefaultHandler(); this.DefaultHandler.Irc = irc; // register the default handlers RegisterHandler("ING", new PingHandler()); RegisterHandler("CAP", new CapHandler()); RegisterHandler("NICK", new NickHandler()); RegisterHandler("PRIVMSG", new PrivmsgHandler()); RegisterHandler("NOTICE", new PrivmsgHandler() { Type = MessageType.Notice }); RegisterHandler("JOIN", new JoinHandler()); RegisterHandler("PART", new PartHandler()); RegisterHandler("KICK", new KickHandler()); RegisterHandler("QUIT", new QuitHandler()); RegisterHandler("MODE", new ModeHandler()); RegisterHandler("470", new ChannelForwardHandler()); RegisterHandler("421", new UnknownCommandHandler()); MultiRegisterHandler(_whoisCmds, new WhoisHandler()); MultiRegisterHandler(_topicCmds, new TopicHandler()); MultiRegisterHandler(_listCmds, new ListHandler()); MultiRegisterHandler(_namesCmds, new NamesHandler()); MultiRegisterHandler(_motdCmds, new MotdHandler()); MultiRegisterHandler(_endMotd, new ServerJoinedHandler()); MultiRegisterHandler(_cannotSend, new CannotSendHandler()); MultiRegisterHandler(_nickErrors, new NickErrorHandler()); }
public override Task<bool> HandleLine(IrcMessage parsedLine) { var channel = parsedLine.TrailMessage.TrailingContent; if (parsedLine.PrefixMessage.Nickname == Irc.Server.Username) { Irc.RemoveChannel(channel); } else { if (parsedLine.CommandMessage.Parameters.Count > 0) { channel = parsedLine.CommandMessage.Parameters[0]; } var msg = new Message { Type = MessageType.JoinPart, User = parsedLine.PrefixMessage.Nickname, Text = string.Format("({0}) {1}", parsedLine.PrefixMessage.Prefix, "left the channel") }; Irc.AddMessage(channel, msg); Irc.ChannelList[channel].Store.RemoveUser(parsedLine.PrefixMessage.Nickname); } return Task.FromResult(true); }
public void SendMsg(string msg) { if (!Irc.JoinedChannels.Contains(Channel)) { Irc.RfcJoin(Channel); } Irc.SendMessage(SendType.Message, Channel, msg); }
private void Start() { irc = new Irc(); irc.controller = this; irc.enableLog = false; irc.ircNick = "MyNickName"; irc.Start(); }
internal void NickCommandHandler(Irc irc, string[] args) { if (args.Length != 2) { return; } irc.Nickname = args[1]; }
public Irc GetResultByRegex() { Irc irc = new Irc(); MatchMaxTargets(ref irc.maxTargets); MatchWallChops(ref irc.wallChops); MatchChanTypes(ref irc.chanTypes); return(irc); }
void Bot_OnMessage(Network n, Irc.IrcEventArgs e) { if (IsMatch("^Eightball \\?$", e.Data.Message)) { AnswerWithNotice(n, e, FormatBold("Use of Eightball plugin:")); AnswerWithNotice(n, e, FormatItalic("<Botname> <your question, at least 7 characters long>?") + " - The bot will answer."); } else if (IsMatch("^" + n.Nickname + " .{7,}\\?\\s*$", e.Data.Message)) Answer(n, e, answers[r.Next(answers.Length)] + ", " + e.Data.Nick + "."); }
public override void RunCommand(string channel, string[] args) { if (args.Length != 2) { return; } Irc.JoinChannel(args[1]); }
internal void JoinCommandHandler(Irc irc, string[] args) { if (args.Length != 2) { return; } irc.JoinChannel(args[1]); }
internal void WhoisCommandHandler(Irc irc, string[] args) { if (args.Length != 2) { return; } irc.WriteLine("WHOIS " + args[1]); }
internal void RawCommandHandler(Irc irc, string[] args) { if (args.Length == 1) { return; } var message = String.Join(" ", args, 1, args.Length - 1); irc.WriteLine(message); }
internal void MeCommandHandler(Irc irc, string[] args) { if (args.Length == 1) { return; } var message = String.Join(" ", args, 1, args.Length - 1); irc.SendAction(message); }
public void Awake() { Debug.Log("Start Gui"); id = Random.Range(0, 9999); if (ircProtocol == null) ircProtocol = new Irc(); ircProtocol.ircNick = "Guest" + Random.Range(0, 999); ircProtocol.controller = this; ircProtocol.Start(); }
public override void RunCommand(string channel, string[] args) { if (args.Length == 1) { return; } var message = string.Join(" ", args, 1, args.Length - 1); Irc.WriteLine(message); }
public FriendsList(IUpstreamConnection connection, Irc.IRawMessageConnection downstream, Configuration conf) { this.downstream = downstream; this.client = connection.Client; this.mapper = connection.Mapper; this.config = conf; client.Friends.FriendOnline += GridClient_FriendPresenceChanged; client.Friends.FriendOffline += GridClient_FriendPresenceChanged; downstream.Register(this); }
void Check(Network network, Irc.JoinEventArgs e) { List<TellInfo> l = LoadFromFile<List<TellInfo>>("Tell"); List<TellInfo> tmp = new List<TellInfo>(); foreach (TellInfo t in l) if (t.Target == e.Data.Nick && t.Network == network.Name) { tmp.Add(t); Answer(network, e, FormatBold(e.Data.Nick) + ", on " + FormatBold(t.Date.ToLongDateString()) + " " + FormatBold(t.Date.ToLongTimeString()) + " " + FormatBold(t.Name) + " wanted to tell you " + FormatBold(t.Text) + "."); } foreach (TellInfo t in tmp) l.Remove(t); if (tmp.Count > 0) SaveToFile<List<TellInfo>>(l,"Tell"); }
void Bot_OnMessage(Network network, Irc.IrcEventArgs e) { if (IsMatch("^bash \\?$", e.Data.Message)) { AnswerWithNotice(n, e, FormatBold("Use of Bash plugin:")); AnswerWithNotice(n, e, FormatItalic("bash") + " - Prints a random quote from http://www.bash.org."); } else if (IsMatch("^bash$", e.Data.Message)) { this.n = network; this.e = e; new System.Threading.Thread(new ThreadStart(GetBash)).Start(); } else if (IsMatch("^german bash$", e.Data.Message)) { this.n = network; this.e = e; new System.Threading.Thread(new ThreadStart(GetGermanBash)).Start(); } }
public void HandleMessage(Irc.Message msg) { if (msg.Argv.Count < 1) { downstream.SendNeedMoreParams("MONITOR"); } switch(msg.Argv[0].ToUpperInvariant()) { case "+": case "-": case "C": downstream.SendNumeric(Numeric.ERR_UNKNOWNSUBCOMMAND, "MONITOR", msg.Argv[0], "Use FriendServ for that"); break; case "L": var idlist = new List<MappedIdentity>(); client.Friends.FriendList.ForEach(i => idlist.Add(mapper.MapUser(i.Key, i.Value.Name))); downstream.Send(idlist.ChunkTrivialBetter(512 / 63).Select(i => { var m = new Irc.Message(downstream.ServerName, Numeric.RPL_MONLIST, downstream.ClientNick); m.Argv.Add(String.Join(",", i.Select(j=>j.IrcNick))); return m; }).AppendSingle(new Irc.Message(downstream.ServerName, Numeric.RPL_ENDOFMONLIST, "End of monitor list"))); break; case "S": var msglist = new List<Irc.Message>(); client.Friends.FriendList.ForEach(i => { var id = mapper.MapUser(i.Key, i.Value.Name); var num = i.Value.IsOnline ? Numeric.RPL_MONONLINE : Numeric.RPL_MONOFFLINE; var response = new Irc.Message(downstream.ServerName, num, "*", id.IrcNick); msglist.Add(response); }); downstream.Send(msglist); break; case "NON": client.Friends.FriendList.ForEach(i => { if(!i.Value.IsOnline) { return; } downstream.SendFromServer("NOTICE", downstream.ClientNick, "[PRESENCE] {0:IrcNick} is now online".Format(mapper.MapUser(i.Key, i.Value.Name))); }); break; } }
void Bot_OnMessage(Network network, Irc.IrcEventArgs e) { if (IsMatch("^tell \\?$", e.Data.Message)) { AnswerWithNotice(network, e, FormatBold("Use of Tell plugin:")); AnswerWithNotice(network, e, FormatItalic("tell <recipient> <message>") + " - Tells <recipient> the <message> the next time he joins."); } else if (IsMatch("^tell (?<target>.*?) (?<message>.*)$", e.Data.Message)) { List<TellInfo> l = LoadFromFile<List<TellInfo>>("Tell"); TellInfo t = new TellInfo(); t.Date = DateTime.Now; t.Name = e.Data.Nick; t.Network = network.Name; t.Target = Matches["target"].ToString(); t.Text = Matches["message"].ToString(); l.Add(t); SaveToFile<List<TellInfo>>(l, "Tell"); AnswerWithNotice(network, e, "I'll tell your message."); } }
void Bot_OnMessage(Network network, Irc.IrcEventArgs e) { if (IsMatch("^reminder \\?$", e.Data.Message)) { AnswerWithNotice(network, e, FormatBold("Use of Reminder plugin:")); AnswerWithNotice(network, e, FormatItalic("remind me in <minutes> <message>") + " - Reminds you in <minutes> minutes."); AnswerWithNotice(network, e, FormatItalic("remind me at <hours>:<minutes> <message>") + " - Reminds you at the given time."); } else if (IsMatch("^remind me in (?<minutes>\\d{1,3}) (?<message>.*)$", e.Data.Message)) { List<RemindInfo> l = Load(); RemindInfo i = new RemindInfo(); i.Network = network.Name; i.Channel = e.Data.Channel; i.User = e.Data.Nick; i.Message = Matches["message"].ToString(); i.Date = DateTime.Now.AddMinutes(int.Parse(Matches["minutes"].ToString())); i.IsPrivate = e.Data.Type == Irc.ReceiveType.QueryMessage; l.Add(i); Save(l); StartThread(); AnswerWithNotice(network, e, "You will be reminded."); } else if (IsMatch("^remind me at (?<hours>\\d{1,2}):(?<minutes>\\d{1,2}) (?<message>.*)$",e.Data.Message)) { List<RemindInfo> l = Load(); RemindInfo i = new RemindInfo(); i.Network = network.Name; i.Channel = e.Data.Channel; i.User = e.Data.Nick; i.Message = Matches["message"].ToString(); i.Date = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, int.Parse(Matches["hours"].ToString()), int.Parse(Matches["minutes"].ToString()), 0); if (i.Date < DateTime.Now) i.Date = i.Date.AddDays(1); i.IsPrivate = e.Data.Type == Irc.ReceiveType.QueryMessage; l.Add(i); Save(l); StartThread(); AnswerWithNotice(network, e, "You will be reminded."); } }
void Bot_OnMessage(Network n, Irc.IrcEventArgs e) { if (IsMatch("^googlesearch \\?$", e.Data.Message)) { AnswerWithNotice(n, e, FormatBold("Use of GoogleSearch plugin:")); AnswerWithNotice(n, e, FormatItalic("google <search term>") + " - Searches google for <search term> and lists the first two results."); AnswerWithNotice(n, e, FormatItalic("google <number of results> <search term>") + " - Searches google for <search term> and lists the first <number of results> (maximum is 10) results."); } else if (IsMatch("^google ((?<count>\\d{1,2}) )?(?<term>.*)$", e.Data.Message)) { int count = 2; if (Matches["count"].Length > 0) count = int.Parse(Matches["count"].ToString()); if (count > 10) count = 10; try { Google.Google.GoogleSearchService s = new Google.Google.GoogleSearchService(); Google.Google.GoogleSearchResult results = s.doGoogleSearch(Bot.Configuration["Plugins"]["GoogleSearch"].Attributes["Key"].Value, Matches["term"].ToString(), 0, count, false, "", false, "", "", ""); if (count > results.resultElements.Length) count = results.resultElements.Length; if (count > 0) { Answer(n, e, FormatBold(count.ToString() + " results for " + FormatItalic(Matches["term"].ToString()) + ".")); for (int i = 0; i < count; i++) { string result = results.resultElements[i].URL + " (" + FormatBold(results.resultElements[i].title) + " - " + results.resultElements[i].snippet + ")"; result = result.Replace("<b>", "").Replace("</b>", "").Replace("<br>", "").Replace("'", "'").Replace("&", "&"); Answer(n, e, result); } } else Answer(n, e, "No results found for " + FormatItalic(Matches["term"].ToString()) + "."); } catch (Exception ex) { Answer(n, e, "Error in GoogleSearch plugin: " + FormatItalic(ex.Message)); } } }
static int Main(string[] args) { if(args.Length != 2) { Console.WriteLine("Usage: sharpie.exe SERVER CHANNEL"); return 1; } var irc = new Irc(new IrcConfig() { Server = args[0], Nickname = "sharpie", Channels = new string[] { args[1] } }); irc.OnChannelMessage((sender, channel, message) => { if(message.StartsWith(irc.Nickname + ": ")) { irc.SendMessage(channel, "{0}: {1}", sender.Nickname, message.Substring(irc.Nickname.Length + 2)); } }); irc.Run(); return 0; }
protected internal static void AnswerWithQuery(Network n, Irc.IrcEventArgs e, string s) { n.SendMessage(Murphy.Irc.SendType.Message, e.Data.Nick, s); }
void OnVoiceHandler(object sender, Irc.VoiceEventArgs e) { if (OnVoice != null) OnVoice((Network)sender, e); }
void OnWhoHandler(object sender, Irc.WhoEventArgs e) { if (OnWho != null) OnWho((Network)sender, e); }
void OnWriteLineHandler(object sender, Irc.WriteLineEventArgs e) { if (OnWriteLine != null) OnWriteLine((Network)sender, e); }
void Bot_OnRawMessage(Network network, Irc.IrcEventArgs e) { Console.WriteLine(e.Data.RawMessage); }
protected internal static void Answer(Network n, Irc.JoinEventArgs e, string s) { n.SendMessage(Murphy.Irc.SendType.Message, e.Data.Channel, s); }
protected internal static void Answer(Network n, Irc.IrcEventArgs e, string s) { if (e.Data.Type == Irc.ReceiveType.QueryMessage) n.SendMessage(Murphy.Irc.SendType.Message, e.Data.Nick, s); else n.SendMessage(Murphy.Irc.SendType.Message, e.Data.Channel, s); }
void Bot_OnJoin(Network network, Irc.JoinEventArgs e) { Check(network, e); }
void Bot_OnJoin(Network n, Irc.JoinEventArgs e) { Op(n, e.Data.From, e.Data.Nick, e.Data.Channel); }
void Bot_OnOp(Network n, Irc.OpEventArgs e) { DeOp(n, GetFullUser(n, e.Whom), e.Whom, e.Data.Channel); }
void Bot_OnJoin(Network network, Irc.JoinEventArgs e) { NewSeen(network.Name, e.Data.Nick, e.Data.Ident, "joining " + e.Data.Channel); }
void Bot_OnQuit(Network network, Irc.QuitEventArgs e) { NewSeen(network.Name, e.Data.Nick, e.Data.Ident, "quitting IRC (" + e.Data.Message + ")"); }
void Bot_OnPart(Network network, Irc.PartEventArgs e) { NewSeen(network.Name, e.Data.Nick, e.Data.Ident, "leaving " + e.Data.Channel); }
void Bot_OnNickChange(Network network, Irc.NickChangeEventArgs e) { NewSeen(network.Name, e.Data.Nick, e.Data.Ident, "changing his nick from " + e.OldNickname + " to " + e.NewNickname); }