private async Task ListBlacklistInternal(string title, BlacklistType type, int page = 0) { if (page < 0) { throw new ArgumentOutOfRangeException(nameof(page)); } var list = _service.GetBlacklist(); var items = await list .Where(x => x.Type == type) .Select(async i => { try { return(i.Type switch { BlacklistType.Channel => Format.Code(i.ItemId.ToString()) + " " + (_client.GetChannel(i.ItemId)?.ToString() ?? ""), BlacklistType.User => Format.Code(i.ItemId.ToString()) + " " + ((await _client.Rest.GetUserAsync(i.ItemId))?.ToString() ?? ""), BlacklistType.Server => Format.Code(i.ItemId.ToString()) + " " + (_client.GetGuild(i.ItemId)?.ToString() ?? ""), _ => Format.Code(i.ItemId.ToString()) }); } catch { Log.Warning("Can't get {BlacklistType} [{BlacklistItemId}]", i.Type, i.ItemId); return(Format.Code(i.ItemId.ToString())); } })
internal IllegalWordsSearchResult(string keyword, int start, int end, string srcText, BlacklistType type) { MatchKeyword = keyword; End = end; Start = start; Keyword = srcText.Substring(Start, end - Start + 1); BlacklistType = type; }
private async Task Blacklist(AddRemove action, ulong id, BlacklistType type) { using (var uow = DbHandler.UnitOfWork()) { if (action == AddRemove.Add) { var item = new BlacklistItem { ItemId = id, Type = type }; uow.BotConfig.GetOrCreate().Blacklist.Add(item); BlacklistedItems.Add(item); } else { uow.BotConfig.GetOrCreate().Blacklist.RemoveWhere(bi => bi.ItemId == id && bi.Type == type); BlacklistedItems.RemoveWhere(bi => bi.ItemId == id && bi.Type == type); } await uow.CompleteAsync().ConfigureAwait(false); } if (action == AddRemove.Add) { TriviaGame tg; switch (type) { case BlacklistType.Server: Games.Games.TriviaCommands.RunningTrivias.TryRemove(id, out tg); if (tg != null) { await tg.StopGame().ConfigureAwait(false); } break; case BlacklistType.Channel: var item = Games.Games.TriviaCommands.RunningTrivias.FirstOrDefault(kvp => kvp.Value.channel.Id == id); Games.Games.TriviaCommands.RunningTrivias.TryRemove(item.Key, out tg); if (tg != null) { await tg.StopGame().ConfigureAwait(false); } break; case BlacklistType.User: break; default: break; } } if (action == AddRemove.Add) { await Context.Channel.SendConfirmAsync($"Blacklisted a `{type}` with id `{id}`").ConfigureAwait(false); } else { await Context.Channel.SendConfirmAsync($"Unblacklisted a `{type}` with id `{id}`").ConfigureAwait(false); } }
/// <summary> /// Attempt to match a blacklist entry against text of a specific type. /// </summary> /// <param name="TextToMatch">Supplies the text to match.</param> /// <param name="TypeToMatch">Supplies the type of text to /// match.</param> /// <returns>True if the text and type are matched by this blacklist /// entry.</returns> internal bool IsBlacklistMatched(string TextToMatch, BlacklistType TypeToMatch) { if (TypeToMatch != MatchType) { return(false); } return(Match.IsMatch(TextToMatch)); }
internal IllegalWordsSearchResult(string keyword, int start, int end, string srcText, BlacklistType type) { Keyword = keyword; Success = true; End = end; Start = start; SrcString = srcText.Substring(Start, end - Start + 1); BlacklistType = type; }
private async Task Blacklist(AddRemove action, ulong id, BlacklistType type) { if (action == AddRemove.Add && _creds.OwnerIds.Contains(id)) { return; } using (var uow = _db.UnitOfWork) { if (action == AddRemove.Add) { var item = new BlacklistItem { ItemId = id, Type = type }; uow.BotConfig.GetOrCreate().Blacklist.Add(item); if (type == BlacklistType.Server) { BlacklistedGuilds.Add(id); } else if (type == BlacklistType.Channel) { BlacklistedChannels.Add(id); } else if (type == BlacklistType.User) { BlacklistedUsers.Add(id); } } else { uow.BotConfig.GetOrCreate().Blacklist.RemoveWhere(bi => bi.ItemId == id && bi.Type == type); if (type == BlacklistType.Server) { BlacklistedGuilds.TryRemove(id); } else if (type == BlacklistType.Channel) { BlacklistedChannels.TryRemove(id); } else if (type == BlacklistType.User) { BlacklistedUsers.TryRemove(id); } } await uow.CompleteAsync().ConfigureAwait(false); } if (action == AddRemove.Add) { await ReplyConfirmLocalized("blacklisted", Format.Code(type.ToString()), Format.Code(id.ToString())).ConfigureAwait(false); } else { await ReplyConfirmLocalized("unblacklisted", Format.Code(type.ToString()), Format.Code(id.ToString())).ConfigureAwait(false); } }
private async Task Blacklist(IUserMessage imsg, AddRemove action, ulong id, BlacklistType type) { var channel = imsg.Channel; using (var uow = DbHandler.UnitOfWork()) { if (action == AddRemove.Add) { var item = new BlacklistItem { ItemId = id, Type = type }; uow.BotConfig.GetOrCreate().Blacklist.Add(item); BlacklistedItems.Add(item); } else { uow.BotConfig.GetOrCreate().Blacklist.RemoveWhere(bi => bi.ItemId == id && bi.Type == type); BlacklistedItems.RemoveWhere(bi => bi.ItemId == id && bi.Type == type); } await uow.CompleteAsync().ConfigureAwait(false); } if (action == AddRemove.Add) { TriviaGame tg; switch (type) { case BlacklistType.Server: Games.Games.TriviaCommands.RunningTrivias.TryRemove(id, out tg); if (tg != null) { await tg.StopGame().ConfigureAwait(false); } break; case BlacklistType.Channel: var item = Games.Games.TriviaCommands.RunningTrivias.FirstOrDefault(kvp => kvp.Value.channel.Id == id); Games.Games.TriviaCommands.RunningTrivias.TryRemove(item.Key, out tg); if (tg != null) { await tg.StopGame().ConfigureAwait(false); } break; case BlacklistType.User: break; default: break; } } await channel.SendMessageAsync(":ok:").ConfigureAwait(false); }
private async Task Blacklist(AddRemove action, ulong id, BlacklistType type) { if (action == AddRemove.Add) { uow.BotConfig.GetOrCreate().Blacklist.Add(new BlacklistItem { ItemId = id, Type = type, }); } else { uow.BotConfig.GetOrCreate().Blacklist.RemoveWhere(bi => bi.ItemId == id && bi.Type == type); } await uow.SaveChangesAsync(false).ConfigureAwait(false); await ReplyConfirmLocalized(action == AddRemove.Add? "blacklisted" : "unblacklisted", Format.Code(type.ToString()), Format.Code(id.ToString())).ConfigureAwait(false); }
internal static void AddObjectToBlacklist(int RAGUID, BlacklistType blacklist) { if (blacklist == BlacklistType.Permanent) { if (!hashRGUIDIgnoreBlacklist.Contains(RAGUID)) hashRGUIDIgnoreBlacklist.Add(RAGUID); } else if (blacklist == BlacklistType.Temporary) { if (!hashRGUIDTemporaryIgnoreBlacklist.Contains(RAGUID)) { hashRGUIDTemporaryIgnoreBlacklist.Add(RAGUID); dateSinceTemporaryBlacklistClear = DateTime.Now; } } }
internal static void AddObjectToBlacklist(int RAGUID, BlacklistType blacklist) { if (blacklist == BlacklistType.Permanent) { if (!hashRGUIDIgnoreBlacklist.Contains(RAGUID)) { hashRGUIDIgnoreBlacklist.Add(RAGUID); } } else if (blacklist == BlacklistType.Temporary) { if (!hashRGUIDTemporaryIgnoreBlacklist.Contains(RAGUID)) { hashRGUIDTemporaryIgnoreBlacklist.Add(RAGUID); dateSinceTemporaryBlacklistClear = DateTime.Now; } } }
private async Task Blacklist(AddRemove action, ulong id, BlacklistType type) { if (action == AddRemove.Add && _creds.OwnerIds.Contains(id)) { return; } using (var uow = _db.UnitOfWork) { if (action == AddRemove.Add) { var item = new BlacklistItem { ItemId = id, Type = type }; uow.BotConfig.GetOrCreate().Blacklist.Add(item); } else { var objs = uow.BotConfig .GetOrCreate(set => set.Include(x => x.Blacklist)) .Blacklist .Where(bi => bi.ItemId == id && bi.Type == type); if (objs.Any()) { uow._context.Set <BlacklistItem>().RemoveRange(objs); } } await uow.CompleteAsync().ConfigureAwait(false); } if (action == AddRemove.Add) { await ReplyConfirmLocalizedAsync("blacklisted", Format.Code(type.ToString()), Format.Code(id.ToString())).ConfigureAwait(false); } else { await ReplyConfirmLocalizedAsync("unblacklisted", Format.Code(type.ToString()), Format.Code(id.ToString())).ConfigureAwait(false); } }
/// <summary> /// 在文本中查找所有的关键字 /// </summary> /// <param name="text">文本</param> /// <param name="blacklist">黑名单</param> /// <returns></returns> public List <IllegalWordsSearchResult> FindAll(string text, BlacklistType blacklist = BlacklistType.All) { return(FindAll(text, (int)blacklist)); }
/// <summary> /// Attempt to match a blacklist entry against text of a specific type. /// </summary> /// <param name="TextToMatch">Supplies the text to match.</param> /// <param name="TypeToMatch">Supplies the type of text to /// match.</param> /// <returns>True if the text and type are matched by this blacklist /// entry.</returns> internal bool IsBlacklistMatched(string TextToMatch, BlacklistType TypeToMatch) { if (TypeToMatch != MatchType) return false; return Match.IsMatch(TextToMatch); }
/// <summary> /// Construct a new BlacklistEntry object. /// </summary> /// <param name="Match">Supplies the match text.</param> /// <param name="MatchType">Supplies the match type.</param> internal BlacklistEntry(string Match, BlacklistType MatchType) { this.Match = new Regex(Match); this.MatchType = MatchType; }
private async Task Blacklist(AddRemove action, ulong id, BlacklistType type) { if (action == AddRemove.Add && _creds.OwnerIds.Contains(id)) { return; } using (var uow = _db.UnitOfWork) { if (action == AddRemove.Add) { var item = new BlacklistItem { ItemId = id, Type = type }; uow.BotConfig.GetOrCreate().Blacklist.Add(item); if (type == BlacklistType.Server) { BlacklistedGuilds.Add(id); } else if (type == BlacklistType.Channel) { BlacklistedChannels.Add(id); } else if (type == BlacklistType.User) { BlacklistedUsers.Add(id); } } else { uow.BotConfig.GetOrCreate().Blacklist.RemoveWhere(bi => bi.ItemId == id && bi.Type == type); if (type == BlacklistType.Server) { BlacklistedGuilds.TryRemove(id); } else if (type == BlacklistType.Channel) { BlacklistedChannels.TryRemove(id); } else if (type == BlacklistType.User) { BlacklistedUsers.TryRemove(id); } } await uow.CompleteAsync().ConfigureAwait(false); } if (action == AddRemove.Add) { TriviaGame tg; switch (type) { case BlacklistType.Server: Games.Games.TriviaCommands.RunningTrivias.TryRemove(id, out tg); if (tg != null) { await tg.StopGame().ConfigureAwait(false); } break; case BlacklistType.Channel: var item = Games.Games.TriviaCommands.RunningTrivias.FirstOrDefault(kvp => kvp.Value.Channel.Id == id); Games.Games.TriviaCommands.RunningTrivias.TryRemove(item.Key, out tg); if (tg != null) { await tg.StopGame().ConfigureAwait(false); } break; case BlacklistType.User: break; } } if (action == AddRemove.Add) { await ReplyConfirmLocalized("blacklisted", Format.Code(type.ToString()), Format.Code(id.ToString())).ConfigureAwait(false); } else { await ReplyConfirmLocalized("unblacklisted", Format.Code(type.ToString()), Format.Code(id.ToString())).ConfigureAwait(false); } }
/// <summary> /// 在文本中替换所有的关键字 /// </summary> /// <param name="text">文本</param> /// <param name="replaceChar">替换符</param> /// <param name="blacklist">黑名单</param> /// <returns></returns> public string Replace(string text, char replaceChar = '*', BlacklistType blacklist = BlacklistType.All) { return(Replace(text, replaceChar, (int)blacklist)); }
/// <summary> /// 判断文本是否包含关键字 /// </summary> /// <param name="text">文本</param> /// <param name="blacklist">黑名单</param> /// <returns></returns> public bool ContainsAny(string text, BlacklistType blacklist = BlacklistType.All) { return(ContainsAny(text, (int)blacklist)); }
/// <summary> /// 在文本中查找第一个关键字 /// </summary> /// <param name="text">文本</param> /// <param name="blacklist">黑名单</param> /// <returns></returns> public IllegalWordsSearchResult FindFirst(string text, BlacklistType blacklist = BlacklistType.All) { return(FindFirst(text, (int)blacklist)); }