コード例 #1
0
        private Task _client_UserUpdated(SocketUser before, SocketUser uAfter)
        {
            var _ = Task.Run(async() =>
            {
                try
                {
                    var after = uAfter as SocketGuildUser;

                    if (after == null)
                    {
                        return;
                    }

                    var g = after.Guild;

                    if (!GuildLogSettings.TryGetValue(g.Id, out LogSetting logSetting) ||
                        (logSetting.UserUpdatedId == null))
                    {
                        return;
                    }

                    ITextChannel logChannel;
                    if ((logChannel = await TryGetLogChannel(g, logSetting, LogType.UserUpdated)) == null)
                    {
                        return;
                    }

                    var embed = new EmbedBuilder();


                    if (before.Username != after.Username)
                    {
                        embed.WithTitle("👥 " + GetText(g, "username_changed"))
                        .WithDescription($"{before.Username}#{before.Discriminator} | {before.Id}")
                        .AddField(fb => fb.WithName("Old Name").WithValue($"{before.Username}").WithIsInline(true))
                        .AddField(fb => fb.WithName("New Name").WithValue($"{after.Username}").WithIsInline(true))
                        .WithFooter(fb => fb.WithText(CurrentTime(g)))
                        .WithOkColor();
                    }
                    else if (before.AvatarId != after.AvatarId)
                    {
                        embed.WithTitle("👥" + GetText(g, "avatar_changed"))
                        .WithDescription($"{before.Username}#{before.Discriminator} | {before.Id}")
                        .WithFooter(fb => fb.WithText(CurrentTime(g)))
                        .WithOkColor();

                        if (Uri.IsWellFormedUriString(before.RealAvatarUrl(), UriKind.Absolute))
                        {
                            embed.WithThumbnailUrl(before.RealAvatarUrl());
                        }
                        if (Uri.IsWellFormedUriString(after.RealAvatarUrl(), UriKind.Absolute))
                        {
                            embed.WithImageUrl(after.RealAvatarUrl());
                        }
                    }
                    else
                    {
                        return;
                    }

                    await logChannel.EmbedAsync(embed).ConfigureAwait(false);

                    //var guildsMemberOf = _client.GetGuilds().Where(g => g.Users.Select(u => u.Id).Contains(before.Id)).ToList();
                    //foreach (var g in guildsMemberOf)
                    //{
                    //    LogSetting logSetting;
                    //    if (!GuildLogSettings.TryGetValue(g.Id, out logSetting)
                    //        || (logSetting.UserUpdatedId == null))
                    //        return;

                    //    ITextChannel logChannel;
                    //    if ((logChannel = await TryGetLogChannel(g, logSetting, LogType.UserUpdated)) == null)
                    //        return;

                    //    try { await logChannel.SendMessageAsync(str).ConfigureAwait(false); } catch { }
                    //}
                }
                catch
                {
                    // ignored
                }
            });

            return(Task.CompletedTask);
        }