Exemplo n.º 1
0
        private async Task AddOrUpdateByDiscordUser(SocketMessage message)
        {
            User newuser      = null;
            User existingUser = null;

            using (var context = new pubgdbModel())
            {
                existingUser = await context.Users.FirstOrDefaultAsync(
                    user => user.DiscordName == message.Author.Username);

                logToConsole.Trace(existingUser == null
                    ? "No User found."
                    : $"User retrieved from database {existingUser.DiscordName}, {existingUser.SteamId}");
                if (existingUser == null)
                {
                    var regiontemp = Regex.Split(message.Content, " ")?[2]?.Trim();


                    newuser = new User()
                    {
                        DiscordName = message.Author.Username,
                        SteamId     = Regex.Split(message.Content, " ")[1].Trim(),
                        Region      = RegionConverter.Convert(Regex.Split(message.Content, " ")?[2])
                    };

                    context.Users.Add(newuser);
                    await context.SaveChangesAsync();

                    logToConsole.Trace(
                        $"Added new user to database Discord User: {message.Author.Username} --- Database model ---> DiscordName: {newuser.DiscordName}, Steam id: {newuser.SteamId}");
                }
                else
                {
                    existingUser.DiscordName = message.Author.Username;
                    existingUser.SteamId     = Regex.Split(message.Content, BotCommands.AddMe)[1].Trim();
                    existingUser.Region      =
                        RegionConverter.Convert(Regex.Split(message.Content, BotCommands.AddMe)?[2]?.Trim());
                    //context.Entry(existingUser).State = EntityState.Modified;
                    await context.SaveChangesAsync();

                    logToConsole.Trace(
                        $"Updated existing user to database Discord User: {message.Author.Username} --- Database model ---> DiscordName: {existingUser.DiscordName}, Steam id: {existingUser.SteamId}");
                }
            }
        }
Exemplo n.º 2
0
        private async Task GetUserStats(SocketMessage message)
        {
            if (message.Content.Contains(BotCommands.StatsMe))
            {
                try
                {
                    using (var context = new pubgdbModel())
                    {
                        var userModel = await context.Users.FirstOrDefaultAsync(
                            user => user.DiscordName == message.Author.Username);

                        var player = await Player.GetStats(userModel.SteamId);

                        var soloRating = player.Stats.FirstOrDefault(
                            region => region.Region == userModel.Region &&
                            region.Mode == Mode.Solo);
                        var duoRating = player.Stats.FirstOrDefault(
                            region => region.Region == userModel.Region &&
                            region.Mode == Mode.Duo);
                        var squadRating = player.Stats.FirstOrDefault(
                            region => region.Region == userModel.Region &&
                            region.Mode == Mode.Squad);
                        logToConsole.Trace(
                            $"Stats for {message.Author.Username} Solo Rating: {soloRating?.Stats.FirstOrDefault(stat => stat.Stat == StatType.Rating)?.Value}, Duo rating: {duoRating?.Stats.FirstOrDefault(stat => stat.Stat == StatType.Rating)?.Value}, Squad Rating: {squadRating?.Stats.FirstOrDefault(stat => stat.Stat == StatType.Rating)?.Value}");
                        await message.Channel.SendMessageAsync(
                            $"Stats for {message.Author.Username} Solo Rating: {soloRating?.Stats.FirstOrDefault(stat => stat.Stat == StatType.Rating)?.Value}, Duo rating: {duoRating?.Stats.FirstOrDefault(stat => stat.Stat == StatType.Rating)?.Value}, Squad Rating: {squadRating?.Stats.FirstOrDefault(stat => stat.Stat == StatType.Rating)?.Value}");
                    }
                }
                catch (Exception e)
                {
                    await message.Channel.SendMessageAsync(
                        $"pubgbot failed to retrieve stats for {message.Author.Username}.");

                    logToFile.Error(e);
                    logToConsole.Error(e);
                    //Console.WriteLine(e);
                    throw;
                }
            }
        }