예제 #1
0
        public async Task AddUserUnBannedEventAsync(GuildBanRemoveEventArgs args)
        {
            UserEvent userEvent = new UserEvent()
            {
                UserId         = args.Member.Id,
                Username       = args.Member.Username,
                Nickname       = args.Member.Nickname,
                Discriminator  = args.Member.Discriminator,
                AvatarId       = args.Member.AvatarHash.ToString(),
                AccountCreated = args.Member.CreationTimestamp.UtcDateTime,
                Bot            = args.Member.IsBot,
                Event          = Event.Unbanned,
                Timestamp      = DateTime.Now,
            };

            try
            {
                using IServiceScope scope = this.scopeFactory.CreateScope();
                using AnalyticsContext db = scope.ServiceProvider.GetRequiredService <AnalyticsContext>();
                db.UserEvents.Add(userEvent);
                await db.SaveChangesAsync();
            }
            catch (Exception e)
            {
                Log.Error(e, $"Failed to add new user event {userEvent.Username}#{userEvent.Discriminator} | {userEvent.UserId}");
                return;
            }
        }
예제 #2
0
        private async Task GuildBanRemoved(DiscordClient sender, GuildBanRemoveEventArgs e)
        {
            var unbanEntry = await GetNewEntryAsync() as DiscordAuditLogBanEntry;

            _entryBuilder = EmbedBuilderExtensions.CreateForAudit(unbanEntry, "Разбан", $"Пользователь {unbanEntry.Target.Username} был разбанен");
            await SendMessageToAuditAsync(embed : _entryBuilder);
        }
예제 #3
0
 private async Task OnGuildBanRemoved(GuildBanRemoveEventArgs e)
 {
     if (GuildBanRemoved != null)
     {
         await GuildBanRemoved(e);
     }
 }
예제 #4
0
 private async Task DBLogBanRemoved(DiscordClient sender, GuildBanRemoveEventArgs args)
 {
     if (IsSBG(args.Guild.Id))
     {
         await this.userEventService.AddUserUnBannedEventAsync(args);
     }
 }
예제 #5
0
 private async Task GuildBanRemoved(DiscordClient c, GuildBanRemoveEventArgs e)
 {
     Task.Run(async() =>
     {
         await logService.GuildLogger(c, e.Guild, e, LogType.Ban).ConfigureAwait(true);
         this.logger.Information($"'{e.Member.GetUsertag()}' ({e.Member.Id}) has been unbanned from '{e.Guild.Name}' ({e.Guild.Id}).");
     });
 }
예제 #6
0
        public static async Task CommandError(ModCoreShard bot, GuildBanRemoveEventArgs e)
        {
            var t = Timers.FindNearestTimer(TimerActionType.Unban, e.Member.Id, 0, e.Guild.Id, bot.Database);

            if (t != null)
            {
                await Timers.UnscheduleTimerAsync(t, bot.Client, bot.Database, bot.SharedData);
            }
        }
예제 #7
0
파일: FilterBot.cs 프로젝트: versx/Brock
        private async Task Client_GuildBanRemoved(GuildBanRemoveEventArgs e)
        {
            _logger.Trace($"FilterBot::Client_GuildBanRemoved [Guild={e.Guild.Name}, Username={e.Member.Username}]");

            var channel = await _client.GetChannel(_config.CommandsChannelId);

            if (channel == null)
            {
                _logger.Error($"Failed to find channel {_config.CommandsChannelId}.");
                return;
            }

            await channel.SendMessageAsync($"Zeus was feeling nice today and unbanned {e.Member.Mention}, welcome back! Hopefully you'll learn to behave this time around. ;)");
        }
예제 #8
0
        private async Task Unban(GuildBanRemoveEventArgs e)
        {
            if (e.Client != Client)
            {
                var emoji = DiscordEmoji.FromName(this.Client, ":dove:");

                // let's wrap the response into an embed
                var embed = new DiscordEmbedBuilder
                {
                    Title       = $"Unban {emoji}",
                    Description = $"User {e.Client.CurrentUser.Username}.",
                    Color       = new DiscordColor(0xFF0000) // red
                                                             // there are also some pre-defined colors available
                                                             // as static members of the DiscordColor struct
                };
                await e.Guild.GetChannel(334793139661570058).SendMessageAsync("", embed: embed);
            }
        }
예제 #9
0
        public static async Task OnGuildBanRemoved(DiscordClient sender, GuildBanRemoveEventArgs args)
        {
            var data    = DataContext.GetUserData(args.Guild.Id, args.Member.Id);
            var lastBan = data.Sanctions.LastOrDefault(s => s.Type == Sanction.SanctionType.Ban);

            if (lastBan != null)
            {
                lastBan.Type      = Sanction.SanctionType.Unban;
                lastBan.ExpiresAt = DateTimeOffset.Now;
                DataContext.SaveUserData(data);
            }

            var unbans = await args.Guild.GetAuditLogsAsync(1, action_type : AuditLogActionType.Unban);

            var responsible = unbans[0].UserResponsible;

            sender.Logger.LogInformation(EventIds.Unban,
                                         "'{RUsername}#{RDiscriminator}' unbanned '{UMUsername}#{UMDiscriminator}'", responsible.Username,
                                         responsible.Discriminator, args.Member.Username, args.Member.Discriminator);
        }
예제 #10
0
        internal static Task BanRemoved(DiscordClient _1, GuildBanRemoveEventArgs e)
        {
            _ = Task.Run(async() =>
            {
                if (e.Guild.Id != 699555747591094344)
                {
                    return;
                }

                DiscordAuditLogBanEntry auditLog = (await e.Guild.GetAuditLogsAsync(limit: 5, action_type: AuditLogActionType.Unban))
                                                   .First(x => ((DiscordAuditLogBanEntry)x).Target == e.Member)
                                                   as DiscordAuditLogBanEntry;

                DiscordEmbedBuilder embed = new DiscordEmbedBuilder()
                                            .WithTimestamp(auditLog.CreationTimestamp)
                                            .WithDescription($":leaves: {Formatter.Bold("User unbanned:")} {e.Member.Username}#{e.Member.Discriminator} ({e.Member.Id})\n" +
                                                             $"{Formatter.Bold("By user:"******" +
                                                             $"\n{Formatter.Bold("Reason:")} {auditLog.Reason}")
                                            .WithColor(DiscordColor.Green);

                await DiscordObjectService.Instance.LogsChannel.SendMessageAsync(embed);
            });
            return(Task.CompletedTask);
        }
예제 #11
0
 async Task Client_BanRemoved(GuildBanRemoveEventArgs e)
 {
 }
예제 #12
0
        private Task GuildBanRemoved(GuildBanRemoveEventArgs e)
        {
            _logger.Information($"'{e.Member.GetUsertag()}' ({e.Member.Id}) has been unbanned from '{e.Guild.Name}' ({e.Guild.Id}).");

            return(Task.CompletedTask);
        }
예제 #13
0
 private Task Client_GuildBanRemoved(GuildBanRemoveEventArgs e)
 {
     e.Client.DebugLogger.LogMessage(LogLevel.Info, "BotApp", e.ToString(), DateTime.Now);
     return(Task.CompletedTask);
 }
예제 #14
0
        public static async Task GuildUnbanEventHandlerAsync(TheGodfatherShard shard, GuildBanRemoveEventArgs e)
        {
            DiscordChannel logchn = shard.SharedData.GetLogChannelForGuild(shard.Client, e.Guild);

            if (logchn == null)
            {
                return;
            }

            DiscordEmbedBuilder emb = FormEmbedBuilder(EventOrigin.KickOrBan, "Member unbanned");

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

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

            await logchn.SendMessageAsync(embed : emb.Build());
        }
예제 #15
0
 private Task Event_GuildBanRemoved(DiscordClient d, GuildBanRemoveEventArgs e)
 {
     d.Logger.LogDebug(BotEventId, "Event_GuildBanRemoved.");
     return(Task.CompletedTask);
 }