/// <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
                    });
                }
            }
        }
Example #2
0
        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;
            }
        }