Beispiel #1
0
        public static async Task OnChannelRemove(ModCoreShard shard, ChannelDeleteEventArgs ea)
        {
            if (ea.Guild == null)
            {
                return;
            }

            using (var db = shard.Database.CreateContext())
            {
                var cfg = ea.Guild.GetGuildSettings(db);
                if (cfg == null || !cfg.RoleState.Enable)
                {
                    return;
                }
                var rs = cfg.RoleState;

                var chperms = db.RolestateOverrides.Where(xs => xs.GuildId == (long)ea.Guild.Id && xs.ChannelId == (long)ea.Channel.Id);

                if (chperms.Any())
                {
                    db.RolestateOverrides.RemoveRange(chperms);
                    await db.SaveChangesAsync();
                }
            }
        }
Beispiel #2
0
 private async Task OnChannelDeleted(ChannelDeleteEventArgs e)
 {
     if (ChannelDeleted != null)
     {
         await ChannelDeleted(e);
     }
 }
Beispiel #3
0
        private async Task Discord_ChannelDeleted(DiscordClient client, ChannelDeleteEventArgs e)
        {
            var logs = (await e.Guild.GetAuditLogsAsync(5, null, AuditLogActionType.ChannelDelete).ConfigureAwait(false)).Cast <DiscordAuditLogChannelEntry>();

            foreach (var entry in logs)
            {
                Console.WriteLine("TargetId: " + entry.Target.Id);
            }
        }
        private Task DiscordClient_ChannelDeleted(ChannelDeleteEventArgs e)
        {
            var channel         = e.Channel;
            var existingChannel = channels.SingleOrDefault(x => x.Id == channel.Id);

            if (existingChannel != null)
            {
                lock (channels) channels.Remove(existingChannel);
            }
            return(Task.CompletedTask);
        }
Beispiel #5
0
 private async Task ChannelDeleted(DiscordClient c, ChannelDeleteEventArgs e)
 {
     Task.Run(async() =>
     {
         if (!e.Channel.IsPrivate)
         {
             await logService.GuildLogger(c, e.Guild, e, LogType.Guild).ConfigureAwait(true);
             this.logger.Information($"Channel '{e.Channel.Name}' ({e.Channel.Id}) has been deleted on guild '{e.Guild.Name}' ({e.Guild.Id}).");
         }
     });
 }
Beispiel #6
0
        public static async Task ChannelDeleted(DiscordClient _, ChannelDeleteEventArgs c)
        {
            var data = new Global().GetDBRecords(c.Guild.Id);

            var channelId = Convert.ToUInt64(data.LogChannel);

            var channelDeletedEmbed = new DiscordEmbedBuilder()
                                      .WithColor(DiscordColor.Red)
                                      .WithDescription($"`Channel:` **{c.Channel.Name}** Has been **deleted**!\n");
            await c.Guild.GetChannel(channelId).SendMessageAsync(embed: channelDeletedEmbed);
        }
Beispiel #7
0
        private Task Discord_ChannelDeleted(DiscordClient client, ChannelDeleteEventArgs e)
        {
            List <string> channels = FileHandler.GetChannelListFromFile(_discord, "logchannels.txt");
            string        guildId  = e.Channel.IsPrivate ? "user" : e.Channel.Guild.Id.ToString();

            if (!channels.Contains($"{guildId} {e.Channel.Id}"))
            {
                return(Task.CompletedTask);
            }

            channels.Remove($"{guildId} {e.Channel.Id}");
            string output = channels.Aggregate("", (current, ch) => current + $"{ch}\n");

            Task.Run(async() => await File.WriteAllTextAsync("logchannels.txt", output));
            client.Logger.LogWarning($"{(guildId != "user" ? $"#{e.Channel.Name} on `{e.Channel.Guild.Name}`" : $"DM channel {e.Channel.Id}")} " +
        /// <summary>
        /// Remove a voice channel from memory and database if it was deleted manually.
        /// </summary>
        private async Task OnChannelDeleted(DiscordClient sender, ChannelDeleteEventArgs e)
        {
            // TODO: Potential use of cache
            await using var unitOfWork = _unitOfWorkFactory.Create();
            var settings = await unitOfWork.AutoVoiceSettings.GetAsync(e.Guild);

            if (settings?.ChannelCreatorId is null)
            {
                return;
            }

            if (settings.RemoveChannel(e.Channel))
            {
                await unitOfWork.CompleteAsync();
            }
        }
Beispiel #9
0
        private async Task ChannelDeleted(DiscordClient sender, ChannelDeleteEventArgs e)
        {
            _newEntry = await GetNewEntryAsync();

            var cdEntry = _newEntry as DiscordAuditLogChannelEntry;

            if (cdEntry == null)
            {
                return;                  // Defense from cases when we delete category with channels under it
            }
            var cType = cdEntry.Target.Type;

            _entryBuilder = EmbedBuilderExtensions.CreateForAudit(cdEntry, "Удаление " + cType.ToRusCommon());
            var shortDesc = $"Удаление {cType.ToRusCommon()} {cdEntry.Target.Name}";
            var desc      = cType == ChannelType.Category ? shortDesc : shortDesc + $", тип канала: {cType.ToRusString()}";

            _entryBuilder.SetDescription(desc);
            await SendMessageToAuditAsync(true, embed : _entryBuilder);
        }
Beispiel #10
0
        private async Task Discord_ChannelDeleted(ChannelDeleteEventArgs e)
        {
            var logs = (await e.Guild.GetAuditLogsAsync(5, null, AuditLogActionType.ChannelDelete).ConfigureAwait(false)).Cast <DiscordAuditLogChannelEntry>();

            foreach (var entry in logs)
            {
                Debug.Log("TargetId: " + entry.Target.Id, Discord);
            }

            //Check through the guild entries and make sure that theres no deleted recorded adresses
            foreach (guildData dataEntries in data)
            {
                ulong        guildID = dataEntries.guildId;
                DiscordGuild guild   = await Discord.GetGuildAsync(guildID);

                DiscordChannel channel = await Discord.GetChannelAsync(dataEntries.disabledChannelID);

                if (channel == null || dataEntries.disabledChannelID == 0)
                {
                    dataEntries.disabledChannelID = 0;
                }
            }
        }
Beispiel #11
0
        public static async Task ChannelDeleted(ChannelDeleteEventArgs e, DiscordClient client, JsonConfig config)
        {
            var log = await client.Guilds.FirstOrDefault().Value.GetAuditLogsAsync(1, null, AuditLogActionType.ChannelDelete);

            var mandatoryChannels = config.mandatoryVoiceChannels;

            if (log == null || log.Count < 1)
            {
                throw new ArgumentException("No entry found");
            }

            var user = log.FirstOrDefault().UserResponsible;

            Console.WriteLine(user.Username + " deleted the " + e.Channel.Name + " channel!");

            if (mandatoryChannels.Contains(e.Channel.Name))
            {
                await client.Guilds.FirstOrDefault().Value.CreateChannelAsync(e.Channel.Name, e.Channel.Type, e.Channel.Parent,
                                                                              e.Channel.Bitrate, e.Channel.UserLimit, e.Channel.PermissionOverwrites, "Mandatory channel recreation.");

                await client.SendMessageAsync(e.Guild.Channels.Where(x => x.Name == "general").FirstOrDefault(),
                                              "A(z) " + e.Channel.Name + " kötött csatorna, nem törölhető! " + user.Username + ", ellenőrző!");
            }
        }
Beispiel #12
0
        private async Task ChannelDelete(BaseDiscordClient client, DiscordGuild guild, IList <Defcon.Data.Guilds.Log> logs, ChannelDeleteEventArgs channelDeleteEventArgs, Guild guildData, Embed embed)
        {
            if (logs.Any(x => x.ChannelId == channelDeleteEventArgs.Channel.Id))
            {
                var deletedLogChannel = logs.First(x => x.ChannelId == channelDeleteEventArgs.Channel.Id);
                guildData.Logs.Remove(deletedLogChannel);
                await redis.ReplaceAsync(RedisKeyNaming.Guild(guild.Id), guildData);
            }

            if (!channelDeleteEventArgs.Channel.IsPrivate)
            {
                embed.Title       = $"{DiscordEmoji.FromGuildEmote(client, EmojiLibrary.Erase)} {channelDeleteEventArgs.Channel.Type.ToString()} channel deleted";
                embed.Description = new StringBuilder().AppendLine($"Name: {Formatter.InlineCode(channelDeleteEventArgs.Channel.Name)}")
                                    .AppendLine($"Identity: {Formatter.InlineCode(channelDeleteEventArgs.Channel.Id.ToString())}")
                                    .ToString();
                embed.Color = DiscordColor.IndianRed;
            }
        }
Beispiel #13
0
 private Task ChannelDeleted(ChannelDeleteEventArgs e)
 {
     /* This would kill my bot */
     return(Task.CompletedTask);
 }
Beispiel #14
0
 private Task Client_ChannelDeleted(ChannelDeleteEventArgs e)
 {
     e.Client.DebugLogger.LogMessage(LogLevel.Info, "BotApp", $"{e.Channel.Name} deleted on {e.Guild.Name}",
                                     DateTime.Now);
     return(Task.CompletedTask);
 }
 private async Task Client_ChannelDeletedAsync(DiscordClient client, ChannelDeleteEventArgs e)
 {
     await _subscriptionsService.RemoveAllSubscriptionsFromChannelAsync(e.Channel.Id);
 }
Beispiel #16
0
        private async Task OnDiscordChannelDeleted(ChannelDeleteEventArgs e)
        {
            Console.WriteLine($"[Discord] Channel delete signal received! (guild: {e.Guild.Id}, channel: {e.Channel.Id})", Color.DodgerBlue);

            await PerformSnapshot(e.Guild);
        }
        public static async Task ChannelDeleteEventHandlerAsync(TheGodfatherShard shard, ChannelDeleteEventArgs e)
        {
            DiscordChannel logchn = shard.SharedData.GetLogChannelForGuild(shard.Client, e.Guild);

            if (logchn == null)
            {
                return;
            }

            if (await shard.DatabaseService.IsExemptedAsync(e.Guild.Id, e.Channel.Id, EntityType.Channel))
            {
                return;
            }

            DiscordEmbedBuilder emb = FormEmbedBuilder(EventOrigin.Channel, "Channel deleted", e.Channel.ToString());

            emb.AddField("Channel type", e.Channel?.Type.ToString() ?? _unknown, inline: true);

            var entry = await e.Guild.GetFirstAuditLogEntryAsync(AuditLogActionType.ChannelDelete);

            if (entry == null || !(entry is DiscordAuditLogChannelEntry centry))
            {
                emb.AddField("Error", "Failed to read audit log information. Please check my permissions");
            }
            else
            {
                emb.AddField("User responsible", centry.UserResponsible?.Mention ?? _unknown, inline: true);
                if (!string.IsNullOrWhiteSpace(centry.Reason))
                {
                    emb.AddField("Reason", centry.Reason);
                }
                emb.WithFooter(centry.CreationTimestamp.ToUtcTimestamp(), centry.UserResponsible.AvatarUrl);
            }

            await logchn.SendMessageAsync(embed : emb.Build());
        }
Beispiel #18
0
 private Task Event_ChannelDeleted(DiscordClient d, ChannelDeleteEventArgs e)
 {
     d.Logger.LogDebug(BotEventId, "Event_ChannelDeleted.");
     return(Task.CompletedTask);
 }