/// <summary>
        /// This method is used to promote or demote given userId on message target
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="promote"></param>
        /// <returns></returns>
        protected async Task <TelegramResult> PromoteMember(
            long userId,
            bool promote
            )
        {
            var result = new TelegramResult();

            try
            {
                await Bot.PromoteChatMemberAsync(
                    chatId : ChatId,
                    userId : userId,
                    isAnonymous : promote,
                    canManageChat : promote,
                    canChangeInfo : promote,
                    canPostMessages : promote,
                    canEditMessages : promote,
                    canDeleteMessages : promote,
                    canManageVideoChats : promote
                    );

                result.IsSuccess = true;
            }
            catch (Exception ex)
            {
                result.Exception = ex;
                result.IsSuccess = false;
            }

            return(result);
        }
    public async Task <TelegramResult> IsMustDelete(string words)
    {
        var op = Operation.Begin("Check Message");

        var isShould       = false;
        var telegramResult = new TelegramResult();

        if (words == null)
        {
            Log.Information("Scan message skipped because Words is null");
            return(telegramResult);
        }

        var listWords = await GetWordsList();

        var partedWord = words.Split(
            new[] { '\n', '\r', ' ', '\t' },
            StringSplitOptions.RemoveEmptyEntries
            )
                         .Distinct()
                         .ToList();

        var skipWords = new[]
        {
            "ping",
            "telegram"
        };

        skipWords.ForEach
        (
            (word1) => {
            partedWord.RemoveAll
            (
                word2 =>
                word2.Length <= 2 ||
                word2.CleanExceptAlphaNumeric().ToLowerCase() == word1
            );
        }
        );

        Log.Debug("Message Word Scan Lists: {V}", partedWord);

        foreach (var word in partedWord)
        {
            var forCompare = word;
            forCompare = forCompare.ToLowerCase().CleanExceptAlphaNumeric();

            foreach (var wordFilter in listWords)
            {
                var isGlobal = wordFilter.IsGlobal;

                var forFilter = wordFilter.Word.ToLowerCase();

                if (forFilter.EndsWith("*", StringComparison.CurrentCultureIgnoreCase))
                {
                    forFilter = forFilter.CleanExceptAlphaNumeric();
                    isShould  = forCompare.Contains(forFilter);

                    Log.Verbose(
                        "Message compare '{ForCompare}' LIKE '{ForFilter}' ? {IsShould}. Global: {IsGlobal}",
                        forCompare,
                        forFilter,
                        isShould,
                        isGlobal
                        );
                }
                else
                {
                    forFilter = wordFilter.Word.ToLowerCase().CleanExceptAlphaNumeric();
                    if (forCompare == forFilter)
                    {
                        isShould = true;
                    }

                    Log.Verbose(
                        "Message compare '{ForCompare}' == '{ForFilter}' ? {IsShould}, Global: {IsGlobal}",
                        forCompare,
                        forFilter,
                        isShould,
                        isGlobal
                        );
                }

                if (!isShould)
                {
                    continue;
                }

                var htmlMessage = HtmlMessage.Empty
                                  .Bold("Filter: ").CodeBr(wordFilter.Word)
                                  .Bold("Comparer: ").CodeBr(forCompare)
                                  .Bold("Kata: ").CodeBr(word);

                telegramResult.Notes     = htmlMessage.ToString();
                telegramResult.IsSuccess = true;
                Log.Debug("Should break L2 loop!");
                break;
            }

            if (!isShould)
            {
                continue;
            }
            Log.Debug("Should break L1 Loop!");
            break;
        }

        op.Complete();

        return(telegramResult);
    }