Ejemplo n.º 1
0
        public void HandleCommand(IRCServer server, string command, IncomingMessage msg)
        {
            CommandManager commands = CommandManager.GetInstance();
            if (!msg.HasMessage())
            {

                msg.SendChat("Available commands: " + commands.AvailableCommands());
                return;
            }

            string cmd = msg.Message.ToLower();
            if (!commands.HasCommand(cmd))
            {
                msg.SendChat("No help for command: " + cmd);
            }
            else
            {
                string help = commands.GetCommand(cmd).Help();
                if (help == null || help.Equals(""))
                {
                    msg.SendChat("No help available for: " + cmd);
                }
                else
                {
                    msg.SendChat("Help for " + cmd + ": " + help);
                }
            }
        }
Ejemplo n.º 2
0
        public IRCServer BuildServer()
        {
            var server = new IRCServer(HostName, Port, Channels, Nick, SSLEnabled, Password);

            server.Logging = LoggingEnabled;
            return(server);
        }
Ejemplo n.º 3
0
        public void HandleCommand(IRCServer server, string command, IncomingMessage msg)
        {
            CommandManager commands = CommandManager.GetInstance();

            if (!msg.HasMessage())
            {
                msg.SendChat("Available commands: " + commands.AvailableCommands());
                return;
            }

            string cmd = msg.Message.ToLower();

            if (!commands.HasCommand(cmd))
            {
                msg.SendChat("No help for command: " + cmd);
            }
            else
            {
                string help = commands.GetCommand(cmd).Help();
                if (help == null || help.Equals(""))
                {
                    msg.SendChat("No help available for: " + cmd);
                }
                else
                {
                    msg.SendChat("Help for " + cmd + ": " + help);
                }
            }
        }
Ejemplo n.º 4
0
        public void HandleCommand(IRCServer server, string command, IncomingMessage message)
        {
            if (!message.HasMessage())
            {
                // bad syntax
                return;
            }


            if (COMMAND_REGEX.IsMatch(message.Message))
            {
                Match  m   = COMMAND_REGEX.Match(message.Message);
                string cmd = m.Groups[1].Value;

                if (cmd.Equals("about"))
                {
                    if (m.Groups[2].Value == null || m.Groups[2].Value.Equals(""))
                    {
                        message.SendChat("Need context");
                    }

                    string markov = MarkovDatabaseAdapter.MarkovFind(m.Groups[2].Value, m.Groups[3].Value);
                    if (markov == null || markov.Equals(""))
                    {
                        message.SendChat("I can't :(");
                    }
                    else
                    {
                        message.SendChat(markov);
                    }
                }
            }
        }
Ejemplo n.º 5
0
        public void HandleCommand(IRCServer server, string command, IncomingMessage message)
        {
            if (!message.HasMessage())
            {
                // bad syntax
                return;
            }

            if (COMMAND_REGEX.IsMatch(message.Message))
            {
                Match m = COMMAND_REGEX.Match(message.Message);
                string cmd = m.Groups[1].Value;

                if (cmd.Equals("about"))
                {
                    if (m.Groups[2].Value == null || m.Groups[2].Value.Equals(""))
                    {
                        message.SendChat("Need context");
                    }

                    string markov = MarkovDatabaseAdapter.MarkovFind(m.Groups[2].Value, m.Groups[3].Value);
                    if (markov == null || markov.Equals(""))
                    {
                        message.SendChat("I can't :(");
                    }
                    else
                    {
                        message.SendChat(markov);
                    }
                }
            }
        }
Ejemplo n.º 6
0
        public void HandleCommand(IRCServer server, string command, IncomingMessage msg)
        {
            int    i      = new Random().Next(0, sayings.Length - 1);
            string saying = sayings[i];

            msg.SendChat(saying);
        }
Ejemplo n.º 7
0
 public void HandleCommand(IRCServer server, string command, IncomingMessage msg)
 {
     if (msg.HasMessage())
     {
         Expression e = new Expression(msg.Message);
         msg.SendChat(e.Evaluate().ToString());
     }
 }
Ejemplo n.º 8
0
 public void HandleCommand(IRCServer server, string command, IncomingMessage msg)
 {
     if (msg.HasMessage())
     {
         string nick = msg.Message.Split(' ')[0];
         server.Nick = nick;
     }
 }
Ejemplo n.º 9
0
 public void HandleCommand(IRCServer server, string command, IncomingMessage msg)
 {
     if (msg.HasMessage())
     {
         string nick = msg.Message.Split(' ')[0];
         server.Nick = nick;
     }
 }
Ejemplo n.º 10
0
        public void HandleCommand(IRCServer server, string command, IncomingMessage msg)
        {
            var    delta   = DateTime.Now - BEGIN;
            var    seconds = delta.Seconds.ToString("n0");
            var    minutes = Math.Floor(delta.TotalMinutes).ToString("n0");
            var    hours   = Math.Floor(delta.TotalHours).ToString("n0");
            var    days    = Math.Floor(delta.TotalDays).ToString("n0");
            string reply   = "";

            if (!seconds.Equals("0"))
            {
                if (minutes.Equals("1"))
                {
                    reply = seconds + " second.";
                }
                else
                {
                    reply = seconds + " seconds.";
                }
            }

            if (!minutes.Equals("0"))
            {
                if (minutes.Equals("1"))
                {
                    reply = minutes + " minute, " + reply;
                }
                else
                {
                    reply = minutes + " minutes, " + reply;
                }
            }

            if (!hours.Equals("0"))
            {
                if (hours.Equals("1"))
                {
                    reply = hours + " hour, " + reply;
                }
                else
                {
                    reply = hours + " hours, " + reply;
                }
            }

            if (!days.Equals("0"))
            {
                if (days.Equals("1"))
                {
                    reply = days + " day, " + reply;
                }
                else
                {
                    reply = days + " days, " + reply;
                }
            }
            msg.SendChat("Current uptime: " + reply);
        }
Ejemplo n.º 11
0
        public void HandleCommand(IRCServer server, string command, IncomingMessage msg)
        {
            var delta = DateTime.Now - BEGIN;
            var seconds = delta.Seconds.ToString("n0");
            var minutes = Math.Floor(delta.TotalMinutes).ToString("n0");
            var hours = Math.Floor(delta.TotalHours).ToString("n0");
            var days = Math.Floor(delta.TotalDays).ToString("n0");
            string reply = "";
            if (!seconds.Equals("0"))
            {
                if (minutes.Equals("1"))
                {
                    reply = seconds + " second.";
                }
                else
                {
                    reply = seconds + " seconds.";
                }
            }

            if (!minutes.Equals("0"))
            {
                if (minutes.Equals("1"))
                {
                    reply = minutes + " minute, " + reply;
                }
                else
                {
                    reply = minutes + " minutes, " + reply;
                }
            }

            if (!hours.Equals("0"))
            {
                if (hours.Equals("1"))
                {
                    reply = hours + " hour, " + reply;
                }
                else
                {
                    reply = hours + " hours, " + reply;
                }
            }

            if (!days.Equals("0"))
            {
                if (days.Equals("1"))
                {
                    reply = days + " day, " + reply;
                }
                else
                {
                    reply = days + " days, " + reply;
                }
            }
            msg.SendChat("Current uptime: " + reply);
        }
Ejemplo n.º 12
0
 public PrivateLine(IRCServer server, IRCUser user)
 {
     Server = server;
     User = user;
     Messages = new List<string>();
     Modules = new List<Module>();
     Modules.Add(new Login(this));
     Modules.Add(new Register(this));
 }
Ejemplo n.º 13
0
        public void Handle(IncomingMessage msg)
        {
            IRCServer server  = msg.Server;
            string    ourNick = server.Nick;

            if (msg.Command.Equals("NICK"))
            {
                string whoChanging = msg.Sender;
                string changingTo  = msg.Target;
                if (whoChanging.Equals(ourNick))
                {
                    server.Nick = changingTo;
                    server.SetAttemptNickChange(false);
                }
                else
                {
                    // update user nick list
                }
            }
            else if (msg.Command.Equals("ERROR"))
            {
                server.Dispose();
            }
            else
            {
                string raw = msg.Raw;
                switch (msg.Command)
                {
                // nick change
                case "433":
                    if (server.Connected)
                    {
                        // are we attempting a nick name change?
                        if (server.IsAttemptNickChange())
                        {
                            server.Nick = server.LastNick;
                            server.SetAttemptNickChange(false);
                        }
                    }
                    else
                    {
                        string nick;
                        if (server.Nick.Equals(server.AltNick))
                        {
                            nick = server.AltNick + 1;
                        }
                        else
                        {
                            nick = server.AltNick;
                        }
                        server.Nick = nick;
                    }
                    break;
                }
            }
        }
Ejemplo n.º 14
0
        public void AddRegion(Scene scene)
        {
            if (!m_Enabled)
            {
                return;
            }

            m_server = new IRCServer(IPAddress.Parse("0.0.0.0"), m_Port, scene);
            m_server.OnNewIRCClient += m_server_OnNewIRCClient;
        }
Ejemplo n.º 15
0
		public IRCChannel(string name, string key, IRCServer parent)
		{
			if (!name.StartsWith("#"))
			{
				name = "#" + name;
			}
			Name = name;
			Key = key;
			Parent = parent;
			Init();
		}
Ejemplo n.º 16
0
 public void Initialise(Scene scene, IConfigSource source)
 {
     if (null != source.Configs["IRCd"] &&
         source.Configs["IRCd"].GetBoolean("Enabled", false))
     {
         int portNo = source.Configs["IRCd"].GetInt("Port", 6666);
         m_scene  = scene;
         m_server = new IRCServer(IPAddress.Parse("0.0.0.0"), portNo, scene);
         m_server.OnNewIRCClient += m_server_OnNewIRCClient;
     }
 }
Ejemplo n.º 17
0
 public CTCPLine(IRCServer server, IRCUser user)
 {
     Server = server;
     User = user;
     Messages = new List<string>();
     Modules = new List<Module>();
     Modules.Add(new Modules.CTCP.Finger(this));
     Modules.Add(new Modules.CTCP.Ping(this));
     Modules.Add(new Modules.CTCP.Time(this));
     Modules.Add(new Modules.CTCP.UserInfo(this));
     Modules.Add(new Modules.CTCP.Version(this));
 }
Ejemplo n.º 18
0
 public void HandleCommand(IRCServer server, string command, IncomingMessage msg)
 {
     if (msg.HasMessage())
     {
         server.Write("QUIT :" + msg.Message);
     }
     else
     {
         server.Write("QUIT :Bye!");
     }
     server.Flush();
     server.Dispose();
 }
Ejemplo n.º 19
0
 public void HandleCommand(IRCServer server, string command, IncomingMessage msg)
 {
     if (msg.HasMessage())
     {
         server.Write("QUIT :" + msg.Message);
     }
     else
     {
         server.Write("QUIT :Bye!");
     }
     server.Flush();
     server.Dispose();
 }
Ejemplo n.º 20
0
        public void Handle(IncomingMessage msg)
        {
            IRCServer server = msg.Server;
            string    target = msg.Target;

            if (server.GetChannel(target).Reconnect)
            {
                Timer t = new Timer((obj) =>
                {
                    server.Write("JOIN " + target);
                    server.Flush();
                }, null, 5000, 0);
            }
        }
Ejemplo n.º 21
0
 /// <summary>
 /// Waits for IRC server connections.
 /// </summary>
 private void WaitForIRCServerConnection()
 {
     ircServer = new IRCServer(daemonTCPSocket);
     while (true)
     {
         try
         {
             DaemonCommandBase daemand  = ircServer.ReceiveCommand();
             string            Response = daemand.ExecuteCommand();
             ircServer.SendResponse(Response);
         }
         catch { continue; }
     }
 }
Ejemplo n.º 22
0
        public void HandleCommand(IRCServer server, string command, IncomingMessage message)
        {
            if (message.HasMessage())
            {
                string   msg    = message.Message;
                string   target = message.Target;
                string[] parts  = message.Message.Split(new char[] { ' ' }, 2);
                if (parts[0].StartsWith("{") && parts[0].EndsWith("}") && parts.Length > 1)
                {
                    target = parts[0].Replace("{", "").Replace("}", "");
                    msg    = parts[1];
                }

                server.SendMessage(target, msg);
            }
        }
Ejemplo n.º 23
0
        public void HandleCommand(IRCServer server, string command, IncomingMessage message)
        {
            if (message.HasMessage())
            {
                string msg = message.Message;
                string target = message.Target;
                string[] parts = message.Message.Split(new char[] { ' ' }, 2);
                if (parts[0].StartsWith("{") && parts[0].EndsWith("}") && parts.Length > 1)
                {
                    target = parts[0].Replace("{", "").Replace("}", "");
                    msg = parts[1];
                }

                server.SendMessage(target, msg);
            }
        }
Ejemplo n.º 24
0
        public void HandleCommand(IRCServer server, string command, IncomingMessage msg)
        {
            if (msg.HasMessage())
            {
                string channel = msg.Message;
                string partMessage = "Bye!";
                if (command.Equals("part"))
                {
                    string[] parts;
                    if (msg.Message.Contains(" "))
                    {
                        parts = msg.Message.Split(new char[] { ' ' }, 2);
                    }
                    else
                    {
                        parts = new string[] { msg.Message };
                    }

                    if (parts.Length > 1)
                    {
                        if (parts[0].StartsWith("#"))
                        {
                            channel = parts[0];
                            partMessage = parts[1];
                        }
                        else
                        {
                            partMessage = msg.Message;
                        }

                    }
                    server.PartChannel(channel, partMessage);
                }
                else
                {
                    server.JoinChannel(msg.Message);
                }
            }
            else
            {
                msg.SendChat(Help());
            }
        }
Ejemplo n.º 25
0
        public void HandleCommand(IRCServer server, string command, IncomingMessage msg)
        {
            if (msg.HasMessage())
            {
                string channel     = msg.Message;
                string partMessage = "Bye!";
                if (command.Equals("part"))
                {
                    string[] parts;
                    if (msg.Message.Contains(" "))
                    {
                        parts = msg.Message.Split(new char[] { ' ' }, 2);
                    }
                    else
                    {
                        parts = new string[] { msg.Message };
                    }

                    if (parts.Length > 1)
                    {
                        if (parts[0].StartsWith("#"))
                        {
                            channel     = parts[0];
                            partMessage = parts[1];
                        }
                        else
                        {
                            partMessage = msg.Message;
                        }
                    }
                    server.PartChannel(channel, partMessage);
                }
                else
                {
                    server.JoinChannel(msg.Message);
                }
            }
            else
            {
                msg.SendChat(Help());
            }
        }
Ejemplo n.º 26
0
 public UserCommand(
     IRCServer server,
     Context context,
     UserManager users,
     ChannelManager channels,
     ChannelUserRelations channelUsers,
     SessionManager sessions,
     IDataProvider dataProvider,
     WelcomeMessage welcomeMessage
     )
 {
     Server         = server ?? throw new ArgumentNullException(nameof(server));
     Context        = context ?? throw new ArgumentNullException(nameof(context));
     Users          = users ?? throw new ArgumentNullException(nameof(users));
     Channels       = channels ?? throw new ArgumentNullException(nameof(channels));
     ChannelUsers   = channelUsers ?? throw new ArgumentNullException(nameof(channelUsers));
     Sessions       = sessions ?? throw new ArgumentNullException(nameof(sessions));
     DataProvider   = dataProvider ?? throw new ArgumentNullException(nameof(dataProvider));
     WelcomeMessage = welcomeMessage ?? throw new ArgumentNullException(nameof(welcomeMessage));
 }
Ejemplo n.º 27
0
        public void Handle(IncomingMessage msg)
        {
            IRCServer server = msg.Server;

            if (msg.Command.Equals("001"))
            {
                foreach (IRCChannel chan in server.GetChannels())
                {
                    server.Write("JOIN " + chan.Channel);
                }

                server.Write("PRIVMSG NICKSERV :IDENTIFY " + server.Pass);
                server.Flush();
                server.Connected = true;
            }
            else if (msg.Raw.Contains("No more connections allowed from your host via this connect class"))
            {
                server.Dispose();
            }
        }
Ejemplo n.º 28
0
 public void HandleCommand(IRCServer server, string command, IncomingMessage msg)
 {
     if (!msg.HasMessage())
     {
         // oh no
         return;
     }
     string nick = msg.Message.ToLower().Split(new char[] { ' ' }, 2)[0];
     string lastSeenEvent = Database.GetKeyValue(server, "lastseen.event." + nick);
     if (lastSeenEvent == null)
     {
         msg.SendChat("Have not seen " + nick);
     }
     else
     {
         TimeSpan t = TimeSpan.FromMilliseconds(Environment.TickCount - long.Parse(Database.GetKeyValue(msg.Server, "lastseen.time." + nick)));
         string answer = string.Format("{0:D2} hours, {1:D2} minutes, {2:D2} seconds",
                                 t.Hours,
                                 t.Minutes,
                                 t.Seconds);
         msg.SendChat(string.Format("Last seen {0}: {1} ago, {2}", nick, answer, lastSeenEvent));
     }
 }
Ejemplo n.º 29
0
        public void HandleCommand(IRCServer server, string command, IncomingMessage msg)
        {
            if (!msg.HasMessage())
            {
                // oh no
                return;
            }
            string nick          = msg.Message.ToLower().Split(new char[] { ' ' }, 2)[0];
            string lastSeenEvent = Database.GetKeyValue(server, "lastseen.event." + nick);

            if (lastSeenEvent == null)
            {
                msg.SendChat("Have not seen " + nick);
            }
            else
            {
                TimeSpan t      = TimeSpan.FromMilliseconds(Environment.TickCount - long.Parse(Database.GetKeyValue(msg.Server, "lastseen.time." + nick)));
                string   answer = string.Format("{0:D2} hours, {1:D2} minutes, {2:D2} seconds",
                                                t.Hours,
                                                t.Minutes,
                                                t.Seconds);
                msg.SendChat(string.Format("Last seen {0}: {1} ago, {2}", nick, answer, lastSeenEvent));
            }
        }
Ejemplo n.º 30
0
 public WelcomeReply(IRCServer server, IUser user)
 {
     Server = server ?? throw new ArgumentNullException(nameof(server));
     User   = user ?? throw new ArgumentNullException(nameof(user));
 }
Ejemplo n.º 31
0

        
Ejemplo n.º 32
0
 public MyInfoReply(IRCServer server)
 {
     Server = server ?? throw new ArgumentNullException(nameof(server));
 }
Ejemplo n.º 33
0
 public void HandleCommand(IRCServer server, string command, IncomingMessage msg)
 {
     int i = new Random().Next(0,sayings.Length-1);
     string saying = sayings[i];
     msg.SendChat(saying);
 }
Ejemplo n.º 34
0
 public PingCommand(IRCServer server, SessionManager sessions)
 {
     Server   = server ?? throw new ArgumentNullException(nameof(server));
     Sessions = sessions ?? throw new ArgumentNullException(nameof(sessions));
 }
Ejemplo n.º 35
0
        public void HandleCommand(IRCServer server, string command, IncomingMessage msg)
        {
            if (!msg.HasMessage())
            {
                msg.SendChat(Help());
                return;
            }

            string term = msg.Message;
            long   lastquery;

            try
            {
                lastquery = long.Parse(Database.GetKeyValue(msg.Server, LASTQUERY_PREFIX + term));
            }
            catch (Exception)
            {
                lastquery = -1;
            }

            if (lastquery > 0 && Environment.TickCount - lastquery < TIMEOUT)
            {
                string lastdata = Database.GetKeyValue(msg.Server, LASTRESULT_PREFIX + term);
                if (lastdata != null && !lastdata.Equals(""))
                {
                    msg.SendChat(msg.Sender + ": " + lastdata);
                }
                else
                {
                    msg.SendChat(string.Format("{0}: There was an error last time retrieving the definition for {1}, please try again in {2} minute(s)", msg.Sender, term,
                                               TimeSpan.FromMilliseconds(TIMEOUT - (Environment.TickCount - lastquery)).Minutes));
                }
            }
            else
            {
                string term_encoded;
                try
                {
                    term_encoded = Uri.EscapeUriString(term);
                }
                catch (Exception)
                {
                    msg.SendChat(msg.Sender + ": Error parsing location," + msg.Message);
                    return;
                }
                Database.SetKeyValue(msg.Server, LASTQUERY_PREFIX + term, Environment.TickCount);
                HttpWebRequest  request  = (HttpWebRequest)WebRequest.Create(URBAN_URL + term_encoded);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                string          responseContent;
                using (var streamReader = new StreamReader(response.GetResponseStream()))
                {
                    responseContent = streamReader.ReadToEnd();
                }

                JObject       json       = JObject.Parse(responseContent);
                StringBuilder definition = new StringBuilder("Urban definition of `" + term + "`: ");

                try
                {
                    definition.Append(json["list"][0]["definition"].ToString());
                }
                catch (Exception)
                {
                    msg.SendChat(msg.Sender + ": Error parsing urban data for, " + msg.Message);
                    return;
                }

                string formatted = definition.ToString();
                Database.SetKeyValue(msg.Server, LASTRESULT_PREFIX + term, formatted);
                msg.SendChat(msg.Sender + ": " + formatted);
            }
        }
Ejemplo n.º 36
0
        public void HandleCommand(IRCServer server, string command, IncomingMessage msg)
        {
            if (!msg.HasMessage())
            {
                msg.SendChat(Help());
                return;
            }

            string term = msg.Message;
            long lastquery;
            try
            {
                lastquery = long.Parse(Database.GetKeyValue(msg.Server, LASTQUERY_PREFIX + term));
            }
            catch (Exception)
            {
                lastquery = -1;
            }

            if (lastquery > 0 && Environment.TickCount - lastquery < TIMEOUT)
            {
                string lastdata = Database.GetKeyValue(msg.Server, LASTRESULT_PREFIX + term);
                if (lastdata != null && !lastdata.Equals(""))
                {
                    msg.SendChat(msg.Sender + ": " + lastdata);
                }
                else
                {
                    msg.SendChat(string.Format("{0}: There was an error last time retrieving the definition for {1}, please try again in {2} minute(s)", msg.Sender, term,
                            TimeSpan.FromMilliseconds(TIMEOUT - (Environment.TickCount - lastquery)).Minutes));
                }
            }
            else
            {
                string term_encoded;
                try
                {
                    term_encoded = Uri.EscapeUriString(term);
                }
                catch (Exception)
                {
                    msg.SendChat(msg.Sender + ": Error parsing location," + msg.Message);
                    return;
                }
                Database.SetKeyValue(msg.Server, LASTQUERY_PREFIX + term, Environment.TickCount);
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URBAN_URL + term_encoded);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                string responseContent;
                using (var streamReader = new StreamReader(response.GetResponseStream()))
                {
                    responseContent = streamReader.ReadToEnd();
                }

                JObject json = JObject.Parse(responseContent);
                StringBuilder definition = new StringBuilder("Urban definition of `" + term + "`: ");

                try
                {
                    definition.Append(json["list"][0]["definition"].ToString());
                }
                catch (Exception)
                {
                    msg.SendChat(msg.Sender + ": Error parsing urban data for, " + msg.Message);
                    return;
                }

                string formatted = definition.ToString();
                Database.SetKeyValue(msg.Server, LASTRESULT_PREFIX + term, formatted);
                msg.SendChat(msg.Sender + ": " + formatted);
            }
        }
Ejemplo n.º 37
0
 public ISupportReply(IRCServer server)
 {
     Server = server ?? throw new ArgumentNullException(nameof(server));
 }
Ejemplo n.º 38
0
 public static string GetIRCMask(this IUser user, IRCServer server)
 {
     return($@"{user.GetIRCMask()}@{server.ServerHost}");
 }
Ejemplo n.º 39
0
 public AdminCommand(IRCServer server)
 {
     Server = server ?? throw new ArgumentNullException(nameof(server));
 }
Ejemplo n.º 40
0
        public void HandleCommand(IRCServer server, string command, IncomingMessage msg)
        {
            try
            {
                string location;
                if (!msg.HasMessage())
                {
                    location = Database.GetKeyValue(msg.Server, "weather.lastlocation." + msg.Sender);
                    if (location == null)
                    {
                        msg.SendChat(msg.Sender + ": No previous location stored");
                        return;
                    }
                }
                else
                {
                    location = msg.Message;
                    Database.SetKeyValue(msg.Server, "weather.lastlocation." + msg.Sender, location);
                }

                long lastquery = -1;
                try
                {
                    lastquery = long.Parse(Database.GetKeyValue(msg.Server, "weather.lastquery." + location));
                }
                catch (Exception)
                {
                    lastquery = -1;
                }

                if (lastquery > 0 && Environment.TickCount - lastquery < TIMEOUT)
                {
                    string lastdata = Database.GetKeyValue(msg.Server, "weather.lastdata." + location);
                    if (lastdata != null && !lastdata.Equals(""))
                    {
                        msg.SendChat(msg.Sender + ": " + lastdata);
                    }
                    else
                    {
                        // oh no
                    }
                }
                else
                {
                    string location_encoded = Uri.EscapeUriString(location);
                    Database.SetKeyValue(msg.Server, "weather.lastquery." + location, Environment.TickCount);
                    HttpWebRequest  request  = (HttpWebRequest)WebRequest.Create(WEATHER_URL + location_encoded);
                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                    string          responseContent;
                    using (var streamReader = new StreamReader(response.GetResponseStream()))
                    {
                        responseContent = streamReader.ReadToEnd();
                    }

                    JObject json = JObject.Parse(responseContent);

                    Database.SetKeyValue(msg.Server, "weather.lastquery." + location, Environment.TickCount);

                    JToken        list = json["list"][0];
                    StringBuilder w    = new StringBuilder("Weather for " + list["name"].ToString() + ", " + list["sys"]["country"].ToString() + ", ");

                    JToken weather     = list["weather"][0];
                    string description = weather["description"].ToString();
                    if (description != null && !description.Equals(""))
                    {
                        w.Append(description).Append(", ");
                    }

                    JToken main = list["main"]; JToken wind = list["wind"];
                    w.Append(string.Format("Temp {0}c (min {1}c/max {2}c), {3}% Humidity, {4} hPa, {5}% Cloudy, Wind Speed {6}m/s",
                                           main["temp"].ToString(),
                                           main["temp_min"].ToString(),
                                           main["temp_max"].ToString(),
                                           main["humidity"].ToString(),
                                           main["pressure"].ToString(),
                                           list["clouds"]["all"].ToString(),
                                           wind["speed"].ToString()));


                    JToken windGust = wind["gust"];
                    if (windGust != null)
                    {
                        w.Append(string.Format(" (gusting {0}m/s)", windGust.ToString()));
                    }

                    string formatted = w.ToString();
                    Database.SetKeyValue(msg.Server, "weather.lastdata." + location, formatted);
                    msg.SendChat(msg.Sender + ": " + formatted);
                }
            }
            catch (Exception e)
            {
                Console.Write(e);
            }
        }
Ejemplo n.º 41
0
 public static void WireUp(BotController controller, IRCServer server)
 {
     server.MessageReceived += new EventHandler <IRCMessage> (controller.ReceiveMessageHandler);
     controller.MessageSent += new EventHandler <IRCMessage> (server.SendMessageHandler);
 }
Ejemplo n.º 42
0
        public void HandleCommand(IRCServer server, string command, IncomingMessage msg)
        {
            try
            {
                string location;
                if (!msg.HasMessage())
                {
                    location = Database.GetKeyValue(msg.Server, "weather.lastlocation." + msg.Sender);
                    if (location == null)
                    {
                        msg.SendChat(msg.Sender + ": No previous location stored");
                        return;
                    }
                }
                else
                {
                    location = msg.Message;
                    Database.SetKeyValue(msg.Server, "weather.lastlocation." + msg.Sender, location);
                }

                long lastquery = -1;
                try
                {
                    lastquery = long.Parse(Database.GetKeyValue(msg.Server, "weather.lastquery." + location));
                }
                catch (Exception)
                {
                    lastquery = -1;
                }

                if (lastquery > 0 && Environment.TickCount - lastquery < TIMEOUT)
                {
                    string lastdata = Database.GetKeyValue(msg.Server, "weather.lastdata." + location);
                    if (lastdata != null && !lastdata.Equals(""))
                    {
                        msg.SendChat(msg.Sender + ": " + lastdata);
                    }
                    else
                    {
                        // oh no
                    }
                }
                else
                {
                    string location_encoded = Uri.EscapeUriString(location);
                    Database.SetKeyValue(msg.Server, "weather.lastquery." + location, Environment.TickCount);
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(WEATHER_URL + location_encoded);
                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                    string responseContent;
                    using (var streamReader = new StreamReader(response.GetResponseStream()))
                    {
                        responseContent = streamReader.ReadToEnd();
                    }

                    JObject json = JObject.Parse(responseContent);

                    Database.SetKeyValue(msg.Server, "weather.lastquery." + location, Environment.TickCount);

                    JToken list = json["list"][0];
                    StringBuilder w = new StringBuilder("Weather for " + list["name"].ToString() + ", " + list["sys"]["country"].ToString() + ", ");

                    JToken weather = list["weather"][0];
                    string description = weather["description"].ToString();
                    if (description != null && !description.Equals(""))
                    {
                        w.Append(description).Append(", ");
                    }

                    JToken main = list["main"]; JToken wind = list["wind"];
                    w.Append(string.Format("Temp {0}c (min {1}c/max {2}c), {3}% Humidity, {4} hPa, {5}% Cloudy, Wind Speed {6}m/s",
                        main["temp"].ToString(),
                        main["temp_min"].ToString(),
                        main["temp_max"].ToString(),
                        main["humidity"].ToString(),
                        main["pressure"].ToString(),
                        list["clouds"]["all"].ToString(),
                        wind["speed"].ToString()));

                    JToken windGust = wind["gust"];
                    if (windGust != null)
                    {
                        w.Append(string.Format(" (gusting {0}m/s)", windGust.ToString()));
                    }

                    string formatted = w.ToString();
                    Database.SetKeyValue(msg.Server, "weather.lastdata." + location, formatted);
                    msg.SendChat(msg.Sender + ": " + formatted);
                }
            }
            catch (Exception e)
            {
                Console.Write(e);
            }
        }