private Task HandleGuildUpdated(SocketGuild guildBefore, SocketGuild guildAfter) { return(Task.Run(async() => { Logger.Log(LogSeverity.Debug, $"Event", "Guild Updated"); var blacklists = await _blaclistRepo.AllAsync(); var isBlacklistedOwner = blacklists.Any(x => x.UserId == guildAfter.OwnerId); var isBlacklistedGuild = blacklists.Any(x => x.GuildIds.Any(y => y == guildAfter.Id)); if (isBlacklistedOwner && !isBlacklistedGuild) { await _blaclistRepo.AddGuildAsync(guildAfter.OwnerId, guildAfter.Id); await guildAfter.LeaveAsync(); } else if (isBlacklistedGuild && !isBlacklistedOwner) { await _blaclistRepo.InsertAsync(new Blacklist(guildAfter.OwnerId, guildAfter.Owner.Username, guildAfter.Owner.GetAvatarUrl())); await guildAfter.LeaveAsync(); } else if (isBlacklistedOwner && isBlacklistedGuild) { await guildAfter.LeaveAsync(); } })); }
private Task HandleJoinedGuild(SocketGuild guild) { return(Task.Run(async() => { Logger.Log(LogSeverity.Debug, $"Event", "Joined Guild"); var blacklists = await _blaclistRepo.AllAsync(); var isBlacklistedGuild = blacklists.Any(x => x.GuildIds.Any(y => y == guild.Id)); foreach (var guildUser in (await(guild as IGuild).GetUsersAsync()).Where(x => blacklists.Any(y => y.UserId == x.Id))) { try { await guild.AddBanAsync(guildUser); } catch { if (guild.OwnerId == guildUser.Id && !isBlacklistedGuild) { await _blaclistRepo.AddGuildAsync(guildUser.Id, guild.Id); await guild.LeaveAsync(); } } } if (isBlacklistedGuild) { await guild.LeaveAsync(); } })); }
private Task HandleUserJoined(SocketGuildUser u) { return(Task.Run(async() => { Logger.Log(LogSeverity.Debug, $"Event", "User Joined"); if ((await _blacklistRepo.AllAsync()).Any(x => x.UserId == u.Id)) { try { await u.Guild.AddBanAsync(u); } catch { // Ignored. } } var user = u as IGuildUser; var dbGuild = await _guildRepo.GetGuildAsync(user.Guild.Id); var mutedRole = user.Guild.GetRole((dbGuild.MutedRoleId)); if (mutedRole != null && u.Guild.CurrentUser.GuildPermissions.ManageRoles && mutedRole.Position < u.Guild.CurrentUser.Roles.OrderByDescending(x => x.Position).First().Position) { await _RankHandler.HandleAsync(user, dbGuild, await _userRepo.GetUserAsync(user)); if (await _muteRepo.IsMutedAsync(user.Id, user.Guild.Id) && mutedRole != null && user != null) { await user.AddRoleAsync(mutedRole); } } if (!string.IsNullOrWhiteSpace(dbGuild.WelcomeMessage)) { var channel = _client.GetChannel(dbGuild.WelcomeChannelId); if (channel != null) { try { await(channel as ITextChannel).SendAsync($"{u}, " + dbGuild.WelcomeMessage); } catch { // Ignored. } } else { try { var dmChannel = await u.CreateDMChannelAsync(); await dmChannel.SendAsync(dbGuild.WelcomeMessage); } catch { // Ignored. } } } })); }