public override void OnCommand(CommandArguments command) { if (command.Message.Length == 0) { CommandHandler.ReplyToCommand(command, "Usage:{0} servers <filter> - See https://developer.valvesoftware.com/wiki/Master_Server_Query_Protocol", Colors.OLIVE); return; } if (command.Message.IndexOf('\\') == -1) { CommandHandler.ReplyToCommand(command, "That doesn't look like a filter."); return; } var request = new CGameServers_GetServerList_Request { filter = command.Message, limit = 5000, }; JobManager.AddJob( () => GameServers.SendMessage(api => api.GetServerList(request)), new JobManager.IRCRequest { Type = JobManager.IRCRequestType.TYPE_GAMESERVERS, Command = command } ); }
public async Task Say([Remainder, Summary("Valve master server query filter")] string filter) { var request = new CGameServers_GetServerList_Request { filter = filter, limit = 20000, // max allowed }; var callback2 = await Program.Instance.connection.GameServers.SendMessage(api => api.GetServerList(request)); var response = callback2.GetDeserializedResponse <CGameServers_GetServerList_Response>(); var servers = response.servers; if (!servers.Any()) { await Context.Channel.SendMessageAsync("No servers."); } if (servers.Count() > 0 && servers.Count <= Program.Instance.connection.DISPLAY_AMOUNT) { foreach (CGameServers_GetServerList_Response.Server server in servers.Take(5)) { await Context.Channel.SendMessageAsync(string.Format("{0} - {1}/{2} - Map: {3} - AppID: {4} - Version: {5} - Dir: {6} - Tags: {7} - Name: {8} \n\n", new SteamID(server.steamid).Render(true), server.players, server.max_players, server.map, server.appid, server.version, server.gamedir, server.gametype, server.name)); } } else if (servers.Count > Program.Instance.connection.DISPLAY_AMOUNT) { var serv = servers.Take(5).Select(x => string.Format("{0} ({1})", x.addr, x.players)); await Context.Channel.SendMessageAsync(string.Format("{0}{1}", string.Join(", ", serv), servers.Count() > 5 ? string.Format(", and {0}{1} more", servers.Count() == 5000 ? ">" : "", servers.Count() - 5) : "")); } }
public override async void OnCommand(CommandArguments command) { if (command.Message.Length == 0) { CommandHandler.ReplyToCommand(command, "Usage:{0} servers <filter> - See https://developer.valvesoftware.com/wiki/Master_Server_Query_Protocol", Colors.OLIVE); return; } if (command.Message.IndexOf('\\') == -1) { CommandHandler.ReplyToCommand(command, "That doesn't look like a filter."); return; } var request = new CGameServers_GetServerList_Request { filter = command.Message, limit = 5000, }; var callback = await GameServers.SendMessage(api => api.GetServerList(request)); var response = callback.GetDeserializedResponse <CGameServers_GetServerList_Response>(); var servers = response.servers; if (!servers.Any()) { CommandHandler.ReplyToCommand(command, "No servers."); return; } if (servers.Count == 1) { var server = servers.First(); CommandHandler.ReplyToCommand(command, "{0} - {1} - {2}/{3} - Map: {4} - AppID: {5} - Version: {6} - Dir: {7} - Tags: {8} - Name: {9}", server.addr, new SteamID(server.steamid).Render(true), server.players, server.max_players, server.map, server.appid, server.version, server.gamedir, server.gametype, server.name ); return; } var serv = servers.Take(5).Select(x => string.Format("{0} ({1})", x.addr, x.players)); CommandHandler.ReplyToCommand(command, "{0}{1}", string.Join(", ", serv), servers.Count > 5 ? string.Format(", and {0}{1} more", servers.Count == 5000 ? ">" : "", servers.Count - 5) : ""); }
public override async Task OnCommand(CommandArguments command) { if (command.Message.Length == 0) { command.Reply("Usage:{0} servers <filter> - See https://developer.valvesoftware.com/wiki/Master_Server_Query_Protocol", Colors.OLIVE); return; } if (command.Message.IndexOf('\\') == -1) { command.Reply("That doesn't look like a filter."); return; } var request = new CGameServers_GetServerList_Request { filter = command.Message, limit = int.MaxValue, }; var task = GameServers.SendMessage(api => api.GetServerList(request)); task.Timeout = TimeSpan.FromSeconds(10); var callback = await task; var response = callback.GetDeserializedResponse <CGameServers_GetServerList_Response>(); var servers = response.servers; if (servers.Count == 0) { command.Reply("No servers."); return; } if (servers.Count == 1) { var server = servers[0]; command.Reply($"{server.addr} - {new SteamID(server.steamid).Render(true)} - {Colors.GREEN}{server.players}/{server.max_players}{Colors.NORMAL} - Map: {Colors.DARKGRAY}{server.map}{Colors.NORMAL} - AppID: {Colors.DARKGRAY}{server.appid}{Colors.NORMAL} - Version: {Colors.DARKGRAY}{server.version}{Colors.NORMAL} - Dir: {Colors.DARKGRAY}{server.gamedir}{Colors.NORMAL} - Tags: {Colors.DARKGRAY}{server.gametype}{Colors.NORMAL} - Name: {Colors.DARKGRAY}{server.name}"); return; } command.Reply($"{Colors.GREEN}{servers.Sum(x => x.players)}{Colors.NORMAL} players on {Colors.GREEN}{servers.Count}{Colors.NORMAL} servers. First three: {string.Join(" / ", servers.Take(3).Select(x => x.addr))}"); }