//private Task _client_UserPresenceUpdated(Optional<SocketGuild> optGuild, SocketUser usr, SocketPresence before, SocketPresence after) //{ // var _ = Task.Run(async () => // { // try // { // var guild = optGuild.GetValueOrDefault() ?? (usr as SocketGuildUser)?.Guild; // if (guild == null) // return; // if (!GuildLogSettings.TryGetValue(guild.Id, out LogSetting logSetting) // || (logSetting.LogUserPresenceId == null) // || before.Status == after.Status) // return; // ITextChannel logChannel; // if ((logChannel = await TryGetLogChannel(guild, logSetting, LogType.UserPresence)) == null) // return; // string str = ""; // if (before.Status != after.Status) // str = "🎭" + Format.Code(PrettyCurrentTime(g)) + // GetText(logChannel.Guild, "user_status_change", // "👤" + Format.Bold(usr.Username), // Format.Bold(after.Status.ToString())); // //if (before.Game?.Name != after.Game?.Name) // //{ // // if (str != "") // // str += "\n"; // // str += $"👾`{prettyCurrentTime}`👤__**{usr.Username}**__ is now playing **{after.Game?.Name}**."; // //} // PresenceUpdates.AddOrUpdate(logChannel, new List<string>() { str }, (id, list) => { list.Add(str); return list; }); // } // catch // { // // ignored // } // }); // return Task.CompletedTask; //} private Task _client_UserLeft(IGuildUser usr) { var _ = Task.Run(async() => { try { if (!GuildLogSettings.TryGetValue(usr.Guild.Id, out LogSetting logSetting) || (logSetting.UserLeftId == null)) { return; } ITextChannel logChannel; if ((logChannel = await TryGetLogChannel(usr.Guild, logSetting, LogType.UserLeft)) == null) { return; } var embed = new EmbedBuilder() .WithOkColor() .WithTitle("❌ " + GetText(logChannel.Guild, "user_left")) .WithDescription(usr.ToString()) .AddField(efb => efb.WithName("Id").WithValue(usr.Id.ToString())) .WithFooter(efb => efb.WithText(CurrentTime(usr.Guild))); if (Uri.IsWellFormedUriString(usr.GetAvatarUrl(), UriKind.Absolute)) { embed.WithThumbnailUrl(usr.GetAvatarUrl()); } await logChannel.EmbedAsync(embed).ConfigureAwait(false); } catch { // ignored } }); return(Task.CompletedTask); }
private Task _client_UserJoined(IGuildUser usr) { var _ = Task.Run(async() => { try { if (!GuildLogSettings.TryGetValue(usr.Guild.Id, out LogSetting logSetting) || (logSetting.UserJoinedId == null)) { return; } ITextChannel logChannel; if ((logChannel = await TryGetLogChannel(usr.Guild, logSetting, LogType.UserJoined)) == null) { return; } var embed = new EmbedBuilder() .WithOkColor() .WithTitle("✅ " + GetText(logChannel.Guild, "user_joined")) .WithDescription($"{usr.Mention} `{usr}`") .AddField(efb => efb.WithName("Id").WithValue(usr.Id.ToString())) .AddField(fb => fb.WithName(GetText(logChannel.Guild, "joined_server")).WithValue($"{usr.JoinedAt?.ToString("dd.MM.yyyy HH:mm") ?? "?"}").WithIsInline(true)) .AddField(fb => fb.WithName(GetText(logChannel.Guild, "joined_discord")).WithValue($"{usr.CreatedAt:dd.MM.yyyy HH:mm}").WithIsInline(true)) .WithFooter(efb => efb.WithText(CurrentTime(usr.Guild))); if (Uri.IsWellFormedUriString(usr.GetAvatarUrl(), UriKind.Absolute)) { embed.WithThumbnailUrl(usr.GetAvatarUrl()); } await logChannel.EmbedAsync(embed).ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } }); return(Task.CompletedTask); }
private static async void _client_ChannelUpdated(IChannel cbefore, IChannel cafter) { try { var before = cbefore as IGuildChannel; if (before == null) { return; } var after = (IGuildChannel)cafter; LogSetting logSetting; if (!GuildLogSettings.TryGetValue(before.Guild.Id, out logSetting) || (logSetting.ChannelUpdatedId == null) || logSetting.IgnoredChannels.Any(ilc => ilc.ChannelId == after.Id)) { return; } ITextChannel logChannel; if ((logChannel = await TryGetLogChannel(before.Guild, logSetting, LogType.ChannelUpdated)) == null) { return; } if (before.Name != after.Name) { await logChannel.SendMessageAsync($@"🕓`{prettyCurrentTime}`ℹ️ **| Channel Name Changed |** #⃣ `{after.Name} ({after.Id})` `Old:` {before.Name} **`New:`** {after.Name}").ConfigureAwait(false); } else if ((before as ITextChannel).Topic != (after as ITextChannel).Topic) { await logChannel.SendMessageAsync($@"🕘`{prettyCurrentTime}`ℹ️ **| Channel Topic Changed |** #⃣ `{after.Name} ({after.Id})` `Old:` {((ITextChannel)before).Topic} **`New:`** {((ITextChannel)after).Topic}").ConfigureAwait(false); } } catch (Exception ex) { _log.Warn(ex); } }
private static async void _client_MessageDeleted(ulong arg1, Optional <SocketMessage> imsg) { try { var msg = (imsg.IsSpecified ? imsg.Value : null) as IUserMessage; if (msg == null || msg.IsAuthor()) { return; } var channel = msg.Channel as ITextChannel; if (channel == null) { return; } LogSetting logSetting; if (!GuildLogSettings.TryGetValue(channel.Guild.Id, out logSetting) || (logSetting.MessageDeletedId == null) || logSetting.IgnoredChannels.Any(ilc => ilc.ChannelId == channel.Id)) { return; } ITextChannel logChannel; if ((logChannel = await TryGetLogChannel(channel.Guild, logSetting, LogType.MessageDeleted)) == null || logChannel.Id == msg.Id) { return; } var str = $@"🕔`{prettyCurrentTime}`👤__**{msg.Author.Username}#{msg.Author.Discriminator}**__ **| Deleted Message |** 🆔 `{msg.Author.Id}` #⃣ `{channel.Name}` 🗑 {msg.Resolve(userHandling: TagHandling.FullName)}"; if (msg.Attachments.Any()) { str += $"{Environment.NewLine}📎 {string.Join(", ", msg.Attachments.Select(a => a.ProxyUrl))}"; } await logChannel.SendMessageAsync(str.SanitizeMentions()).ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } }
private Task MuteCommands_UserUnmuted(IGuildUser usr, MuteCommands.MuteType muteType) { LogSetting logSetting; if (!GuildLogSettings.TryGetValue(usr.Guild.Id, out logSetting) || !logSetting.IsLogging) { return(Task.CompletedTask); } ITextChannel logChannel; if ((logChannel = TryGetLogChannel(usr.Guild, logSetting)) == null) { return(Task.CompletedTask); } var task = Task.Run(async() => { string mutes = ""; switch (muteType) { case MuteCommands.MuteType.Voice: mutes = "voice chat"; break; case MuteCommands.MuteType.Chat: mutes = "text chat"; break; case MuteCommands.MuteType.All: mutes = "text and voice chat"; break; } try { await logChannel.SendMessageAsync($"‼️🕕`{prettyCurrentTime}`👤__**{usr.Username}#{usr.Discriminator}**__🔊 **| User unmuted from the {mutes}. |** 🆔 `{usr.Id}`").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } }); return(Task.CompletedTask); }
private Task _client_UserBanned(IUser usr, IGuild guild) { var _ = Task.Run(async() => { try { if (!GuildLogSettings.TryGetValue(guild.Id, out var logSetting) || logSetting.UserBannedId == null) { return; } ITextChannel logChannel; if ((logChannel = await TryGetLogChannel(guild, logSetting, LogType.UserBanned)) == null) { return; } var embed = new EmbedBuilder() .WithOkColor() .WithTitle("🚫 " + GetText(logChannel.Guild, "user_banned")) .WithDescription(usr.ToString()) .AddField(efb => efb.WithName("Id").WithValue(usr.Id.ToString())) .WithFooter(efb => efb.WithText(CurrentTime(guild))); var avatarUrl = usr.GetAvatarUrl(); if (Uri.IsWellFormedUriString(avatarUrl, UriKind.Absolute)) { embed.WithThumbnailUrl(usr.GetAvatarUrl()); } await logChannel.EmbedAsync(embed).ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } }); return(Task.CompletedTask); }
public static async Task TriggeredAntiProtection(IGuildUser[] users, PunishmentAction action, ProtectionType protection) { if (users.Length == 0) { return; } LogSetting logSetting; if (!GuildLogSettings.TryGetValue(users.First().Guild.Id, out logSetting) || !logSetting.IsLogging) { return; } ITextChannel logChannel; if ((logChannel = TryGetLogChannel(users.First().Guild, logSetting)) == null) { return; } var punishment = ""; if (action == PunishmentAction.Mute) { punishment = "MUTED"; } else if (action == PunishmentAction.Kick) { punishment = "KICKED"; } else if (action == PunishmentAction.Ban) { punishment = "BANNED"; } await logChannel.SendMessageAsync(String.Join("\n", users.Select(user => $"{Format.Bold(user.ToString())} was **{punishment}** due to `{protection}` protection on **{user.Guild.Name}** server."))) .ConfigureAwait(false); }
private static async void MuteCommands_UserUnmuted(IGuildUser usr, MuteCommands.MuteType muteType) { try { LogSetting logSetting; if (!GuildLogSettings.TryGetValue(usr.Guild.Id, out logSetting) || (logSetting.UserMutedId == null)) { return; } ITextChannel logChannel; if ((logChannel = await TryGetLogChannel(usr.Guild, logSetting, LogType.UserMuted)) == null) { return; } string mutes = ""; switch (muteType) { case MuteCommands.MuteType.Voice: mutes = "voice chat"; break; case MuteCommands.MuteType.Chat: mutes = "text chat"; break; case MuteCommands.MuteType.All: mutes = "text and voice chat"; break; } await logChannel.SendMessageAsync($"‼️🕕`{prettyCurrentTime}`👤__**{usr.Username}#{usr.Discriminator}**__🔊 **| User unmuted from the {mutes}. |** 🆔 `{usr.Id}`").ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } }
private Task _client_MessageUpdated(Cacheable <IMessage, ulong> optmsg, SocketMessage imsg2, ISocketMessageChannel ch) { var _ = Task.Run(async() => { try { var after = imsg2 as IUserMessage; if (after == null || after.IsAuthor(_client)) { return; } var before = (optmsg.HasValue ? optmsg.Value : null) as IUserMessage; if (before == null) { return; } var channel = ch as ITextChannel; if (channel == null) { return; } if (before.Content == after.Content) { return; } if (!GuildLogSettings.TryGetValue(channel.Guild.Id, out LogSetting logSetting) || (logSetting.MessageUpdatedId == null) || logSetting.IgnoredChannels.Any(ilc => ilc.ChannelId == channel.Id)) { return; } ITextChannel logChannel; if ((logChannel = await TryGetLogChannel(channel.Guild, logSetting, LogType.MessageUpdated)) == null || logChannel.Id == after.Channel.Id) { return; } var embed = new EmbedBuilder() .WithOkColor() .WithTitle("📝 " + GetText(logChannel.Guild, "msg_update", ((ITextChannel)after.Channel).Name)) .WithDescription(after.Author.ToString()) .AddField(efb => efb.WithName(GetText(logChannel.Guild, "old_msg")).WithValue(string.IsNullOrWhiteSpace(before.Content) ? "-" : before.Resolve(userHandling: TagHandling.FullName)).WithIsInline(false)) .AddField(efb => efb.WithName(GetText(logChannel.Guild, "new_msg")).WithValue(string.IsNullOrWhiteSpace(after.Content) ? "-" : after.Resolve(userHandling: TagHandling.FullName)).WithIsInline(false)) .AddField(efb => efb.WithName("Id").WithValue(after.Id.ToString()).WithIsInline(false)) .WithFooter(efb => efb.WithText(CurrentTime(channel.Guild))); await logChannel.EmbedAsync(embed).ConfigureAwait(false); } catch { // ignored } }); return(Task.CompletedTask); }
private Task _client_UserVoiceStateUpdated(SocketUser iusr, SocketVoiceState before, SocketVoiceState after) { var _ = Task.Run(async() => { try { var usr = iusr as IGuildUser; if (usr == null || usr.IsBot) { return; } var beforeVch = before.VoiceChannel; var afterVch = after.VoiceChannel; if (beforeVch == afterVch) { return; } if (!GuildLogSettings.TryGetValue(usr.Guild.Id, out LogSetting logSetting) || (logSetting.LogVoicePresenceId == null)) { return; } ITextChannel logChannel; if ((logChannel = await TryGetLogChannel(usr.Guild, logSetting, LogType.VoicePresence)) == null) { return; } string str = null; if (beforeVch?.Guild == afterVch?.Guild) { str = "🎙" + Format.Code(PrettyCurrentTime(usr.Guild)) + GetText(logChannel.Guild, "user_vmoved", "👤" + Format.Bold(usr.Username + "#" + usr.Discriminator), Format.Bold(beforeVch?.Name ?? ""), Format.Bold(afterVch?.Name ?? "")); } else if (beforeVch == null) { str = "🎙" + Format.Code(PrettyCurrentTime(usr.Guild)) + GetText(logChannel.Guild, "user_vjoined", "👤" + Format.Bold(usr.Username + "#" + usr.Discriminator), Format.Bold(afterVch.Name ?? "")); } else if (afterVch == null) { str = "🎙" + Format.Code(PrettyCurrentTime(usr.Guild)) + GetText(logChannel.Guild, "user_vleft", "👤" + Format.Bold(usr.Username + "#" + usr.Discriminator), Format.Bold(beforeVch.Name ?? "")); } if (!string.IsNullOrWhiteSpace(str)) { PresenceUpdates.AddOrUpdate(logChannel, new List <string>() { str }, (id, list) => { list.Add(str); return(list); }); } } catch { // ignored } }); return(Task.CompletedTask); }
private Task _client_GuildUserUpdated(SocketGuildUser before, SocketGuildUser after) { var _ = Task.Run(async() => { try { if (!GuildLogSettings.TryGetValue(before.Guild.Id, out LogSetting logSetting)) { return; } ITextChannel logChannel; if (logSetting.UserUpdatedId != null && (logChannel = await TryGetLogChannel(before.Guild, logSetting, LogType.UserUpdated)) != null) { var embed = new EmbedBuilder().WithOkColor().WithFooter(efb => efb.WithText(CurrentTime(before.Guild))) .WithTitle($"{before.Username}#{before.Discriminator} | {before.Id}"); if (before.Nickname != after.Nickname) { embed.WithAuthor(eab => eab.WithName("👥 " + GetText(logChannel.Guild, "nick_change"))) .AddField(efb => efb.WithName(GetText(logChannel.Guild, "old_nick")).WithValue($"{before.Nickname}#{before.Discriminator}")) .AddField(efb => efb.WithName(GetText(logChannel.Guild, "new_nick")).WithValue($"{after.Nickname}#{after.Discriminator}")); await logChannel.EmbedAsync(embed).ConfigureAwait(false); } else if (!before.Roles.SequenceEqual(after.Roles)) { if (before.Roles.Count < after.Roles.Count) { var diffRoles = after.Roles.Where(r => !before.Roles.Contains(r)).Select(r => r.Name); embed.WithAuthor(eab => eab.WithName("⚔ " + GetText(logChannel.Guild, "user_role_add"))) .WithDescription(string.Join(", ", diffRoles).SanitizeMentions()); } else if (before.Roles.Count > after.Roles.Count) { var diffRoles = before.Roles.Where(r => !after.Roles.Contains(r)).Select(r => r.Name); embed.WithAuthor(eab => eab.WithName("⚔ " + GetText(logChannel.Guild, "user_role_rem"))) .WithDescription(string.Join(", ", diffRoles).SanitizeMentions()); } await logChannel.EmbedAsync(embed).ConfigureAwait(false); } } logChannel = null; if (!before.IsBot && logSetting.LogUserPresenceId != null && (logChannel = await TryGetLogChannel(before.Guild, logSetting, LogType.UserPresence)) != null) { if (before.Status != after.Status) { var str = "🎭" + Format.Code(PrettyCurrentTime(after.Guild)) + GetText(logChannel.Guild, "user_status_change", "👤" + Format.Bold(after.Username), Format.Bold(after.Status.ToString())); PresenceUpdates.AddOrUpdate(logChannel, new List <string>() { str }, (id, list) => { list.Add(str); return(list); }); } else if (before.Game?.Name != after.Game?.Name) { var str = $"👾`{PrettyCurrentTime(after.Guild)}`👤__**{after.Username}**__ is now playing **{after.Game?.Name ?? "-"}**."; PresenceUpdates.AddOrUpdate(logChannel, new List <string>() { str }, (id, list) => { list.Add(str); return(list); }); } } } catch { // ignored } }); return(Task.CompletedTask); }
public Task TriggeredAntiProtection(PunishmentAction action, ProtectionType protection, params IGuildUser[] users) { var _ = Task.Run(async() => { try { if (users.Length == 0) { return; } if (!GuildLogSettings.TryGetValue(users.First().Guild.Id, out LogSetting logSetting) || (logSetting.LogOtherId == null)) { return; } ITextChannel logChannel; if ((logChannel = await TryGetLogChannel(users.First().Guild, logSetting, LogType.Other)) == null) { return; } var punishment = ""; switch (action) { case PunishmentAction.Mute: punishment = "🔇 " + GetText(logChannel.Guild, "muted_pl").ToUpperInvariant(); break; case PunishmentAction.Kick: punishment = "👢 " + GetText(logChannel.Guild, "kicked_pl").ToUpperInvariant(); break; case PunishmentAction.Softban: punishment = "☣ " + GetText(logChannel.Guild, "soft_banned_pl").ToUpperInvariant(); break; case PunishmentAction.Ban: punishment = "⛔️ " + GetText(logChannel.Guild, "banned_pl").ToUpperInvariant(); break; case PunishmentAction.RemoveRoles: punishment = "⛔️ " + GetText(logChannel.Guild, "remove_roles_pl").ToUpperInvariant(); break; } var embed = new EmbedBuilder().WithAuthor(eab => eab.WithName($"🛡 Anti-{protection}")) .WithTitle(GetText(logChannel.Guild, "users") + " " + punishment) .WithDescription(string.Join("\n", users.Select(u => u.ToString()))) .WithFooter(fb => fb.WithText(CurrentTime(logChannel.Guild))) .WithOkColor(); await logChannel.EmbedAsync(embed).ConfigureAwait(false); } catch { // ignored } }); return(Task.CompletedTask); }
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); }
private Task _client_UserUpdated(IGuildUser before, IGuildUser after) { LogSetting logSetting; if (!GuildLogSettings.TryGetValue(before.Guild.Id, out logSetting) || !logSetting.IsLogging || !logSetting.UserUpdated) { return(Task.CompletedTask); } ITextChannel logChannel; if ((logChannel = TryGetLogChannel(before.Guild, logSetting)) == null) { return(Task.CompletedTask); } var task = Task.Run(async() => { try { string str = $"🕔`{prettyCurrentTime}`"; if (before.Username != after.Username) { //str += $"**Name Changed**`{before.Username}#{before.Discriminator}`\n\t\t`New:`{after.ToString()}`"; str += $"👤__**{before.Username}#{before.Discriminator}**__ **| Name Changed |** 🆔 `{before.Id}`\n\t\t`New:` **{after.ToString()}**"; } else if (before.Nickname != after.Nickname) { str += $"👤__**{before.Username}#{before.Discriminator}**__ **| Nickname Changed |** 🆔 `{before.Id}`\n\t\t`Old:` **{before.Nickname}#{before.Discriminator}**\n\t\t`New:` **{after.Nickname}#{after.Discriminator}**"; } //str += $"**Nickname Changed**`{before.Username}#{before.Discriminator}`\n\t\t`Old:` {before.Nickname}#{before.Discriminator}\n\t\t`New:` {after.Nickname}#{after.Discriminator}"; else if (before.AvatarUrl != after.AvatarUrl) { //str += $"**Avatar Changed**👤`{before.Username}#{before.Discriminator}`\n\t {await _google.ShortenUrl(before.AvatarUrl)} `=>` {await _google.ShortenUrl(after.AvatarUrl)}"; str += $"👤__**{before.Username}#{before.Discriminator}**__ **| Avatar Changed |** 🆔 `{before.Id}`\n\t🖼 {await _google.ShortenUrl(before.AvatarUrl)} `=>` {await _google.ShortenUrl(after.AvatarUrl)}"; } else if (!before.Roles.SequenceEqual(after.Roles)) { if (before.Roles.Count() < after.Roles.Count()) { var diffRoles = after.Roles.Where(r => !before.Roles.Contains(r)).Select(r => "**" + r.Name + "**"); //str += $"**User's Roles changed ⚔➕**👤`{before.ToString()}`\n\tNow has {string.Join(", ", diffRoles)} role."; str += $"👤__**{before.ToString()}**__ **| User's Role Added |** 🆔 `{before.Id}`\n\t✅ {string.Join(", ", diffRoles)}\n\t\t⚔ **`{string.Join(", ", after.Roles.Select(r => r.Name)).SanitizeMentions()}`** ⚔"; } else if (before.Roles.Count() > after.Roles.Count()) { var diffRoles = before.Roles.Where(r => !after.Roles.Contains(r)).Select(r => "**" + r.Name + "**"); //str += $"**User's Roles changed **`{before.ToString()}`\n\tNo longer has {string.Join(", ", diffRoles)} role."; str += $"👤__**{before.ToString()}**__ **| User's Role Removed |** 🆔 `{before.Id}`\n\t🚮 {string.Join(", ", diffRoles)}\n\t\t⚔ **`{string.Join(", ", after.Roles.Select(r => r.Name)).SanitizeMentions()}`** ⚔"; } } else { return; } try { await logChannel.SendMessageAsync(str).ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } } catch { } }); return(Task.CompletedTask); }
private static async void _client_UserUpdated(SocketUser uBefore, SocketUser uAfter) { try { var before = uBefore as SocketGuildUser; if (before == null) { return; } var after = uAfter as SocketGuildUser; if (after == null) { return; } LogSetting logSetting; if (!GuildLogSettings.TryGetValue(before.Guild.Id, out logSetting) || (logSetting.UserUpdatedId == null)) { return; } ITextChannel logChannel; if ((logChannel = await TryGetLogChannel(before.Guild, logSetting, LogType.UserUpdated)) == null) { return; } string str = $"🕔`{prettyCurrentTime}`"; if (before.Username != after.Username) { str += $"👤__**{before.Username}#{before.Discriminator}**__ **| Name Changed |** 🆔 `{before.Id}`\n\t\t`New:` **{after.ToString()}**"; } else if (before.Nickname != after.Nickname) { str += $"👤__**{before.Username}#{before.Discriminator}**__ **| Nickname Changed |** 🆔 `{before.Id}`\n\t\t`Old:` **{before.Nickname}#{before.Discriminator}**\n\t\t`New:` **{after.Nickname}#{after.Discriminator}**"; } else if (before.AvatarUrl != after.AvatarUrl) { str += $"👤__**{before.Username}#{before.Discriminator}**__ **| Avatar Changed |** 🆔 `{before.Id}`\n\t🖼 {await NadekoBot.Google.ShortenUrl(before.AvatarUrl)} `=>` {await NadekoBot.Google.ShortenUrl(after.AvatarUrl)}"; } else if (!before.RoleIds.SequenceEqual(after.RoleIds)) { if (before.RoleIds.Count < after.RoleIds.Count) { var diffRoles = after.RoleIds.Where(r => !before.RoleIds.Contains(r)).Select(r => "**" + before.Guild.GetRole(r).Name + "**"); str += $"👤__**{before.ToString()}**__ **| User's Role Added |** 🆔 `{before.Id}`\n\t✅ {string.Join(", ", diffRoles).SanitizeMentions()}\n\t\t⚔ **`{string.Join(", ", after.GetRoles().Select(r => r.Name)).SanitizeMentions()}`** ⚔"; } else if (before.RoleIds.Count > after.RoleIds.Count) { var diffRoles = before.RoleIds.Where(r => !after.RoleIds.Contains(r)).Select(r => "**" + before.Guild.GetRole(r).Name + "**"); str += $"👤__**{before.ToString()}**__ **| User's Role Removed |** 🆔 `{before.Id}`\n\t🚮 {string.Join(", ", diffRoles).SanitizeMentions()}\n\t\t⚔ **`{string.Join(", ", after.GetRoles().Select(r => r.Name)).SanitizeMentions()}`** ⚔"; } } else { return; } try { await logChannel.SendMessageAsync(str).ConfigureAwait(false); } catch (Exception ex) { _log.Warn(ex); } } catch (Exception ex) { _log.Warn(ex); } }