async Task <bool?> IHandler <InlineQuery, object, bool?> .Handle(InlineQuery data, object context, CancellationToken cancellationToken)
        {
            var queryParts = new StringSegment(data.Query).Split(new[] { ':' });

            if (queryParts.First() != ID)
            {
                return(null);
            }

            var inlineQueryResults = Enumerable.Empty <InlineQueryResult>();

            if (!PollEx.TryGetPollId(queryParts.ElementAtOrDefault(1), out var pollId, out var format))
            {
                inlineQueryResults = await GetActivePolls(data.From, cancellationToken);
            }
        public async Task <(string, bool, string)> Handle(CallbackQuery data, object context = default, CancellationToken cancellationToken = default)
        {
            var callback = new StringSegment(data.Data).Split(new[] { ':' });

            if (callback.First() != ID)
            {
                return(null, false, null);
            }

            if (myBlackList.Contains(data.From.Id))
            {
                return(null, false, null);
            }

            PollMessage pollMessage;

            if (callback.ElementAtOrDefault(1) is var pollIdSegment && PollEx.TryGetPollId(pollIdSegment, out var pollId, out var format))
            {
                pollMessage = await myRaidService.GetOrCreatePollAndMessage(new PollMessage(data) { BotId = myBot.BotId, PollId = pollId }, myUrlHelper, format, cancellationToken);
            }