Esempio n. 1
0
        public void Run(IrcMessage theMessage)
        {
            string address = theMessage.CommandArgs.FirstOrDefault();

            try
            {
                IrcUser user = theMessage.Data.Irc.GetIrcUser(address);
                address = user.Host;
            }
            catch { }

            Match match = Regex.Match(address, @"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}");

            if (match.Success && IPAddress.TryParse(match.Groups[0].Value, out IPAddress parsedAddress))
            {
                address = parsedAddress.ToString();
            }

            LocationInfoDetailed details = Geolocation.GetLocationInfoDetailed(address);

            if (details.Success)
            {
                if (String.IsNullOrEmpty(details.timeZone))
                {
                    theMessage.Answer($"Die IP {details.ipAddress} befindet sich im Land {details.countryName} ({details.countryCode})");
                }
                else
                {
                    theMessage.Answer($"Die IP {details.ipAddress} befindet sich im Land {details.countryName} ({details.countryCode}), vermutlich in der Stadt {details.cityName}. Dort ist es gerade {details.LocalTime} Uhr");
                }
            }
            else
            {
                theMessage.Answer("Lokalisierung fehlgeschlagen");
            }
        }