Example #1
0
 private async Task OnGuildRoleUpdated(GuildRoleUpdateEventArgs e)
 {
     if (GuildRoleUpdated != null)
     {
         await GuildRoleUpdated(e);
     }
 }
Example #2
0
        private async Task GuildRoleUpdated(DiscordClient sender, GuildRoleUpdateEventArgs e)
        {
            var roleUpdEntry = await GetNewEntryAsync() as DiscordAuditLogRoleUpdateEntry;

            if (roleUpdEntry == null)
            {
                return;
            }
            _entryBuilder = EmbedBuilderExtensions.CreateForAudit(roleUpdEntry,
                                                                  "Обновление роли",
                                                                  $"Обновлена роль {roleUpdEntry.Target.Name}");
            _entryBuilder.AddNamePropertyChange(roleUpdEntry.NameChange);

            _entryBuilder.AddPropertyChange("Возможность упоминания", roleUpdEntry.MentionableChange);
            _entryBuilder.AddPropertyChange("Уникальность", roleUpdEntry.HoistChange);
            _entryBuilder.AddPropertyChange("Позиция", roleUpdEntry.PositionChange);

            if (roleUpdEntry.ColorChange != null)
            {
                _entryBuilder.AddField("Измёнён цвет", roleUpdEntry.Target.Mention, true);
            }

            if (roleUpdEntry.PermissionChange != null)
            {
                _entryBuilder.AddField("Обновление привилегий", roleUpdEntry.PermissionChange.ToRusString());
            }

            await SendMessageToAuditAsync(embed : _entryBuilder);
        }
Example #3
0
        internal static Task RoleUpdated(DiscordClient _1, GuildRoleUpdateEventArgs e)
        {
            _ = Task.Run(async() =>
            {
                if (e.Guild.Id != 699555747591094344)
                {
                    return;
                }

                if (e.RoleBefore.Name == e.RoleAfter.Name &&
                    e.RoleBefore.IsHoisted == e.RoleAfter.IsHoisted &&
                    e.RoleBefore.Color.Value == e.RoleAfter.Color.Value &&
                    e.RoleBefore.Permissions == e.RoleAfter.Permissions &&
                    e.RoleBefore.IsMentionable == e.RoleAfter.IsMentionable)
                {
                    return;
                }
                DiscordEmbedBuilder embed = new DiscordEmbedBuilder()
                                            .WithTimestamp(DateTime.Now)
                                            .WithDescription($":information_source: The role {e.RoleAfter.Mention} ({e.RoleAfter.Id}) was just updated")
                                            .AddField("Name", e.RoleBefore.Name == e.RoleAfter.Name ? "No change" : $"{e.RoleBefore.Name} -> {e.RoleAfter.Name}", true)
                                            .AddField("Hoist", e.RoleBefore.IsHoisted == e.RoleAfter.IsHoisted ? "No change" : $"{e.RoleBefore.IsHoisted} -> {e.RoleAfter.IsHoisted}", true)
                                            .AddField("Color", e.RoleBefore.Color.Value == e.RoleAfter.Color.Value ? "No change" : $"{e.RoleBefore.Color} -> {e.RoleAfter.Color}", true)
                                            .AddField("Permissions", e.RoleBefore.Permissions == e.RoleAfter.Permissions ? "No change" : $"{(int)e.RoleBefore.Permissions} -> {(int)e.RoleAfter.Permissions}", true)
                                            .AddField("Mentionable", e.RoleBefore.IsMentionable == e.RoleAfter.IsMentionable ? "No change" : $"{e.RoleBefore.IsMentionable} -> {e.RoleAfter.IsMentionable}", true)
                                            .WithColor(DiscordColor.Blurple);

                await DiscordObjectService.Instance.LogsChannel.SendMessageAsync(new DiscordMessageBuilder().WithEmbed(embed).WithAllowedMentions(Mentions.None));
            });
            return(Task.CompletedTask);
        }
Example #4
0
 private async Task GuildRoleUpdated(DiscordClient c, GuildRoleUpdateEventArgs e)
 {
     Task.Run(async() =>
     {
         await logService.GuildLogger(c, e.Guild, e, LogType.Guild).ConfigureAwait(true);
         this.logger.Information($"Role '{e.RoleAfter.Name}' ({e.RoleAfter.Id}) has been updated on guild '{e.Guild.Name}' ({e.Guild.Id}).");
     });
 }
Example #5
0
 private Task GuildRoleUpdated(GuildRoleUpdateEventArgs e)
 {
     /* This would kill my bot */
     return(Task.CompletedTask);
 }
Example #6
0
 private Task Client_GuildRoleUpdated(GuildRoleUpdateEventArgs e)
 {
     e.Client.DebugLogger.LogMessage(LogLevel.Info, "BotApp", e.ToString(), DateTime.Now);
     return(Task.CompletedTask);
 }
Example #7
0
        public static async Task GuildRoleUpdateEventHandlerAsync(TheGodfatherShard shard, GuildRoleUpdateEventArgs e)
        {
            if (e.RoleBefore.Position != e.RoleAfter.Position)
            {
                return;
            }

            DiscordChannel logchn = shard.SharedData.GetLogChannelForGuild(shard.Client, e.Guild);

            if (logchn == null)
            {
                return;
            }

            DiscordEmbedBuilder emb = FormEmbedBuilder(EventOrigin.Role, "Role updated");
            var entry = await e.Guild.GetFirstAuditLogEntryAsync(AuditLogActionType.RoleUpdate);

            if (entry != null && entry is DiscordAuditLogRoleUpdateEntry rentry)
            {
                emb.WithDescription(rentry.Target.Id.ToString());
                emb.AddField("User responsible", rentry.UserResponsible.Mention, inline: true);
                if (rentry.NameChange != null)
                {
                    emb.AddField("Name change", $"{rentry.NameChange.Before ?? _unknown} -> {rentry.NameChange.After ?? _unknown}", inline: true);
                }
                if (rentry.ColorChange != null)
                {
                    emb.AddField("Color changed", $"{rentry.ColorChange.Before?.ToString() ?? _unknown} -> {rentry.ColorChange.After?.ToString() ?? _unknown}", inline: true);
                }
                if (rentry.HoistChange != null)
                {
                    emb.AddField("Hoist", rentry.HoistChange.After?.ToString() ?? _unknown, inline: true);
                }
                if (rentry.MentionableChange != null)
                {
                    emb.AddField("Mentionable", rentry.MentionableChange.After?.ToString() ?? _unknown, inline: true);
                }
                if (rentry.PermissionChange != null)
                {
                    emb.AddField("Permissions changed to", rentry.PermissionChange.After?.ToPermissionString() ?? _unknown, inline: true);
                }
                if (rentry.PositionChange != null)
                {
                    emb.AddField("Position changed to", rentry.PositionChange.After?.ToString() ?? _unknown, inline: true);
                }
                if (!string.IsNullOrWhiteSpace(rentry.Reason))
                {
                    emb.AddField("Reason", rentry.Reason);
                }
                emb.WithFooter(rentry.CreationTimestamp.ToUtcTimestamp(), rentry.UserResponsible.AvatarUrl);
            }
            else
            {
                emb.AddField("Error", "Failed to read audit log information. Please check my permissions");
                emb.AddField("Role", e.RoleBefore?.ToString() ?? _unknown);
            }

            await logchn.SendMessageAsync(embed : emb.Build());
        }
Example #8
0
        private async Task OnDiscordRoleUpdated(GuildRoleUpdateEventArgs e)
        {
            Console.WriteLine($"[Discord] Role update signal received! (guild: {e.Guild.Id})", Color.DodgerBlue);

            await PerformSnapshot(e.Guild);
        }
Example #9
0
 private Task Event_GuildRoleUpdated(DiscordClient d, GuildRoleUpdateEventArgs e)
 {
     d.Logger.LogDebug(BotEventId, "Event_GuildRoleUpdated.");
     return(Task.CompletedTask);
 }
Example #10
0
        private static async Task GuildRoleUpdate(BaseDiscordClient client, Embed embed, GuildRoleUpdateEventArgs guildRoleUpdateEventArgs)
        {
            var before = guildRoleUpdateEventArgs.RoleBefore;
            var after  = guildRoleUpdateEventArgs.RoleAfter;

            var nameChanged          = before.Name != after.Name;
            var isHoistedChanged     = before.IsHoisted != after.IsHoisted;
            var isManagedChanged     = before.IsManaged != after.IsManaged;
            var isMentionableChanged = before.IsMentionable != after.IsMentionable;
            var permissionsChanged   = before.Permissions != after.Permissions;

            var permissions = permissionsChanged ? await before.Permissions.GetChangedRolesDifference(after.Permissions).ConfigureAwait(true) : string.Empty;

            var roleChanged = nameChanged ||
                              isHoistedChanged ||
                              isManagedChanged ||
                              isMentionableChanged ||
                              permissionsChanged;

            if (roleChanged)
            {
                embed.Title = $"{DiscordEmoji.FromGuildEmote(client, EmojiLibrary.Update)} Role updated";
                var description = new StringBuilder().AppendLine(before.Name == after.Name
                        ? $"Name: {Formatter.InlineCode(after.Name)} {after.Mention}"
                        : $"Name: {Formatter.InlineCode(before.Name)} to {Formatter.InlineCode(after.Name)} {after.Mention}")
                                  .AppendLine($"Identity: {Formatter.InlineCode(after.Id.ToString())}");

                if (isMentionableChanged)
                {
                    description.AppendLine($"Mentionable: {Formatter.InlineCode(before.IsMentionable.ToString())} to {Formatter.InlineCode(after.IsMentionable.ToString())}");
                }

                if (permissionsChanged)
                {
                    embed.Fields = new List <EmbedField> {
                        new EmbedField()
                        {
                            Inline = false, Name = "Changed Permissions", Value = permissions
                        }
                    };
                }
                embed.Description = description.ToString();
                embed.Color       = DiscordColor.CornflowerBlue;
            }
            else
            {
                passInformation = false;
            }
        }