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); }