/// <summary> /// Добавить или обновить данные о сервере, на котором играет участник /// </summary> /// <param name="uid">Uid участника</param> /// <param name=""></param> public void AddOsuServerInfo(ulong uid, string server, int id) { using (IDocumentSession session = store.OpenSession()) { WAVMember member = session.Query <WAVMember>() .Include(x => x.OsuServers) .FirstOrDefault(x => x.Uid == uid); if (member is null) { throw new NullReferenceException("No such object in DB"); } WAVMemberOsuProfileInfo serverInfo = member.OsuServers.FirstOrDefault(x => x.Server == server); if (serverInfo is not null) { serverInfo.Id = id; } else { member.OsuServers.Add(new WAVMemberOsuProfileInfo() { Server = server, Id = id, BestLast = DateTime.Now, RecentLast = DateTime.Now }); } } }
public async Task LastRecent(CommandContext commandContext, params string[] args) { ulong discordId = commandContext.Member.Id; if (wavMembers.GetMember(discordId) is null) wavMembers.CreateMember(discordId); string choosedServer = args.FirstOrDefault() ?? "-bancho"; WAVMemberOsuProfileInfo userInfo = wavMembers.GetOsuProfileInfo(discordId, choosedServer); if (userInfo is null) { await commandContext.RespondAsync($"Не удалось найти ваш osu! профиль сервера `{choosedServer}`. Добавьте свой профиль через команду `osuset`"); return; } switch (choosedServer) { case "-gatari": GScore gscore = gapi.GetUserRecentScores(userInfo.Id, 0, 1, true).First(); GUser guser = null; if (!gapi.TryGetUser(userInfo.Id, ref guser)) { await commandContext.RespondAsync("Не удалось найти такого пользователя на Gatari."); return; } DiscordEmbed gscoreEmbed = utils.GatariScoreToEmbed(gscore, guser); await commandContext.RespondAsync(embed: gscoreEmbed); break; case "-bancho": Score score = api.GetUserRecentScores(userInfo.Id, true, 0, 1).First(); User user = null; if (!api.TryGetUser(userInfo.Id, ref user)) { await commandContext.RespondAsync("Не удалось найти такого пользователя на Gatari."); return; } DiscordEmbed scoreEmbed = utils.BanchoScoreToEmbed(score, user); await commandContext.RespondAsync(embed: scoreEmbed); break; default: await commandContext.RespondAsync($"Сервер `{choosedServer}` не поддерживается."); break; } }