internal static async Task <IEnumerable <Game> > GetGames()
        {
            JArray raw = null;

            do
            {
                Logger.Log(LogLevel.Info, "尝试从 Botzone 读取游戏列表……");
                try
                {
                    var str = await client.GetStringAsync(Credentials.BotzoneGamesURL());

                    raw = JArray.Parse(str);
                }
                catch (Exception ex)
                {
                    Logger.Log(LogLevel.Warning, "请求过程中发生错误:" + ex.Message);
                    Logger.Log(LogLevel.InfoTip, "5秒后重试……");
                    await Task.Delay(5000);
                }
            } while (raw == null);

            Logger.Log(LogLevel.OK, "游戏列表加载成功!");
            return(from game in raw.Children()
                   select new Game
            {
                Name = (string)game["name"],
                PlayerCount = (int)game["min_player_num"],
                Description = (string)game["desc"]
            });
        }