Exemplo n.º 1
0
        /// <inheritdoc />
        public async Task TrackUserAsync(IGuildUser user)
        {
            using (var transaction = await GuildUserRepository.BeginCreateTransactionAsync())
            {
                if (!await GuildUserRepository.TryUpdateAsync(user.Id, user.GuildId, data =>
                {
                    // Only update properties that we were given. Updates can be triggered from several different sources, not all of which have all the user's info.
                    if (user.Username != null)
                    {
                        data.Username = user.Username;
                    }
                    if (user.DiscriminatorValue != 0)
                    {
                        data.Discriminator = user.Discriminator;
                    }
                    if ((user.Username != null) && (user.DiscriminatorValue != 0))
                    {
                        data.Nickname = user.Nickname;
                    }
                    data.LastSeen = DateTimeOffset.Now;
                }))
                {
                    await GuildUserRepository.CreateAsync(new GuildUserCreationData()
                    {
                        UserId        = user.Id,
                        GuildId       = user.GuildId,
                        Username      = user.Username ?? "[UNKNOWN USERNAME]",
                        Discriminator = (user.DiscriminatorValue == 0) ? "????" : user.Discriminator,
                        Nickname      = user.Nickname,
                        FirstSeen     = DateTimeOffset.Now,
                        LastSeen      = DateTimeOffset.Now
                    });
                }

                transaction.Commit();
            }
        }