Пример #1
0
        public InlineKeyboardButton Create(CallbackQueryActionType backActionCallBack, string callbackData = null)
        {
            var callbackDataText = string.IsNullOrWhiteSpace(callbackData)
                ? CallbackDataFormatter.ToCallBackData(backActionCallBack)
                : $"{CallbackDataFormatter.ToCallBackData(backActionCallBack)};{callbackData}";

            return(new InlineKeyboardButton
            {
                Text = _currentUserLocalizationService["back"],
                CallbackData = callbackDataText
            });
        }
        public Task Handle(CallbackQuery callbackQuery)
        {
            /*
             * Get message id from callback and store it
             *
             * Callback data to KeyValue pairs
             *               \/
             *               V
             * Get certain handler depending on CallbackQueryActionType
             * Delegate handling to specific handler
             *
             */
            CallbackQueryData             callbackQueryData = null;
            ISpecificCallbackQueryHandler handler           = null;

            try
            {
                StoreMessageId(callbackQuery);
                callbackQueryData = CallbackDataFormatter.DeserializeCallbackQueryData(callbackQuery.Data);
                callbackQueryData.CallbackQueryId = callbackQuery.Id;

                handler = _queryHandlerProvider.GetHandler(callbackQueryData.CallbackQueryActionType);
                return(handler.Handle(callbackQueryData));
            }
            catch (Exception e)
            {
                var callbackQueryId = callbackQuery.Id;
                var user            = callbackQuery.From;

                var messageId   = callbackQuery.Message?.MessageId;
                var messageText = callbackQuery.Message?.Text;

                _logger.LogError(TelegramLogEvents.CallbackQueryHandlerError, e,
                                 "Telegram callbackQueryId: {callbackQueryId}. " +
                                 "Telegram user: {user}. " +
                                 "Callback query message id: {messageId}. " +
                                 "Message text: {messageText}" +
                                 "callbackQueryData: {callbackQueryData}. " +
                                 "handler: {handler}. ",
                                 callbackQueryId, user, messageId, messageText, callbackQueryData, handler);

                throw;
            }
        }