コード例 #1
0
ファイル: BlacklistCommands.cs プロジェクト: Nielk1/NadekoBot
            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()));
                    }
                })
コード例 #2
0
 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;
 }
コード例 #3
0
            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);
                }
            }
コード例 #4
0
        /// <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));
        }
コード例 #5
0
 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;
 }
コード例 #6
0
            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);
                }
            }
コード例 #7
0
            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);
            }
コード例 #8
0
            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);
            }
コード例 #9
0
ファイル: Blacklisting.cs プロジェクト: BUFORD/Funky
        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;
                }
            }
        }
コード例 #10
0
 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;
         }
     }
 }
コード例 #11
0
            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);
                }
            }
コード例 #12
0
 /// <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));
 }
コード例 #13
0
        /// <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);
        }
コード例 #14
0
 /// <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;
 }
コード例 #15
0
            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);
                }
            }
コード例 #16
0
 /// <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;
 }
コード例 #17
0
 /// <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));
 }
コード例 #18
0
 /// <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));
 }
コード例 #19
0
 /// <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));
 }