protected override void OnRun(CommandDetails details) { if (details.Args.Length == 0) { IRC.Instance.Send(details.Channel, "{0}: filter argument required", details.Sender.Nickname); return; } if (!Steam.Instance.Connected) { IRC.Instance.Send(details.Channel, "{0}: Unable to request server count: not connected to Steam!", details.Sender.Nickname); return; } var query = new SteamMasterServer.QueryDetails { Region = ERegionCode.World, }; query.Filter = string.Join(" ", details.Args); var jobId = Steam.Instance.MasterServer.ServerQuery(query); AddRequest(details, new Request { JobID = jobId }); }
protected override void OnRun(CommandDetails details) { if (details.Args.Length < 3) { base.ShowHelp(details); return; } if (!Steam.Instance.Connected) { IRC.Instance.Send(details.Channel, "{0}: Unable to find server: not connected to Steam!", details.Sender.Nickname); return; } IPAddress search; if (!IPAddress.TryParse(details.Args[0], out search)) { IRC.Instance.Send(details.Channel, "{0}: Invalid search IP address.", details.Sender.Nickname); base.ShowHelp(details); return; } IPAddress geo; if (!IPAddress.TryParse(details.Args[1], out geo)) { geo = null; if (!string.Equals(details.Args[1], "none", StringComparison.OrdinalIgnoreCase)) { IRC.Instance.Send(details.Channel, "{0}: Invalid geo IP address.", details.Sender.Nickname); base.ShowHelp(details); return; } } ERegionCode regionCode; if (!Enum.TryParse(details.Args[2], true, out regionCode)) { IRC.Instance.Send(details.Channel, "{0}: Invalid region code, should be one of: {1}", details.Sender.Nickname, string.Join(", ", Enum.GetNames(typeof(ERegionCode))) ); base.ShowHelp(details); return; } var query = new SteamMasterServer.QueryDetails { GeoLocatedIP = geo, Region = regionCode, }; query.Filter = string.Join(" ", details.Args.Skip(3)); var jobId = Steam.Instance.MasterServer.ServerQuery(query); AddRequest(details, new Request { JobID = jobId, SearchIP = search }); }