public HandleCallbackQueryCommand Handle(CallbackData data, Service service, CallbackQueryHandler handler)
        {
            HandleCallbackQueryCommand del = async sender => await handler.HandleCallbackQAuthorize(sender);

            if (data.Command.Equals(TextCommand.AUTHORIZE_COMMAND, StringComparison.CurrentCultureIgnoreCase))
            {
                return(del);
            }
            return(null);
        }
        public HandleCallbackQueryCommand Handle(CallbackData data, Service service, CallbackQueryHandler handler)
        {
            if (!(data is GetCallbackData))
            {
                return(null);
            }

            HandleCallbackQueryCommand del = async sender => await handler.HandleCallbackQHideActions(sender, service, data as GetCallbackData);

            if (data.Command.Equals(CallbackCommand.HIDE_ACTIONS_COMMAND, StringComparison.CurrentCultureIgnoreCase))
            {
                return(del);
            }
            return(null);
        }
        public HandleCallbackQueryCommand Handle(CallbackData data, Service service, CallbackQueryHandler handler)
        {
            if (!(data is SendCallbackData))
            {
                return(null);
            }

            HandleCallbackQueryCommand del = async sender => await handler.HandleCallbackQRemoveItemNewMessage(sender, data as SendCallbackData);

            if (data.Command.Equals(CallbackCommand.REMOVE_ITEM_COMMAND, StringComparison.CurrentCultureIgnoreCase))
            {
                return(del);
            }
            return(null);
        }
        public HandleCallbackQueryCommand Handle(CallbackData data, Service service, CallbackQueryHandler handler)
        {
            if (!(data is SendCallbackData))
            {
                return(null);
            }

            HandleCallbackQueryCommand del = async sender => await handler.HandleCallbackQContinueFromDraft(sender, data as SendCallbackData);

            if (data.Command.Equals(CallbackCommand.CONTINUE_FROM_DRAFT_COMMAND, StringComparison.CurrentCultureIgnoreCase))
            {
                return(del);
            }
            return(null);
        }
        public HandleCallbackQueryCommand Handle(CallbackData data, Service service, CallbackQueryHandler handler)
        {
            if (!(data is SendCallbackData))
            {
                return(null);
            }

            HandleCallbackQueryCommand del = async sender => await handler.HandleCallbackQNotSaveAsDraft(sender, data as SendCallbackData);

            if (data.Command.Equals(CallbackCommand.NOT_SAVE_AS_DRAFT_COMMAND, StringComparison.CurrentCultureIgnoreCase))
            {
                return(del);
            }
            return(null);
        }
        public HandleCallbackQueryCommand Handle(CallbackData data, Service service, CallbackQueryHandler handler)
        {
            if (!(data is SendCallbackData))
            {
                return(null);
            }

            HandleCallbackQueryCommand del = async sender => await handler.HandleCallbackQAddSubject(sender, data as SendCallbackData);

            if (data.Command.Equals(CallbackCommand.ADD_SUBJECT_COMMAND, StringComparison.CurrentCultureIgnoreCase))
            {
                return(del);
            }
            return(null);
        }
        public HandleCallbackQueryCommand Handle(CallbackData data, Service service, CallbackQueryHandler handler)
        {
            if (!(data is GetCallbackData))
            {
                return(null);
            }

            HandleCallbackQueryCommand del = async sender => await handler.HandleCallbackQGetAttachment(service, data as GetCallbackData);

            if (data.Command.Equals(CallbackCommand.GET_ATTACHMENT_COMMAND, StringComparison.CurrentCultureIgnoreCase))
            {
                return(del);
            }
            return(null);
        }
        public HandleCallbackQueryCommand Handle(CallbackData data, Service service, CallbackQueryHandler handler)
        {
            if (!(data is GetCallbackData))
            {
                return(null);
            }

            HandleCallbackQueryCommand del = async sender => await handler.HandleCallbackQToTrash(sender, data as GetCallbackData);

            if (data.Command.Equals(CallbackCommand.TO_TRASH_COMMAND, StringComparison.CurrentCultureIgnoreCase))
            {
                return(del);
            }
            return(null);
        }
        public HandleCallbackQueryCommand Handle(CallbackData data, Service service, CallbackQueryHandler handler)
        {
            if (!(data is SettingsCallbackData))
            {
                return(null);
            }

            if (!data.Command.Equals(CallbackCommand.NOTIFY_STOP_COMMAND,
                                     StringComparison.CurrentCultureIgnoreCase))
            {
                return(null);
            }

            HandleCallbackQueryCommand del = async sender => await handler.HandleCallbackQStopNotify(sender, service);

            return(del);
        }
        public HandleCallbackQueryCommand Handle(CallbackData data, Service service, CallbackQueryHandler handler)
        {
            if (!(data is GeneralCallbackData))
            {
                return(null);
            }

            if (!data.Command.Equals(CallbackCommand.RESUME_NOTIFICATION_COMMAND,
                                     StringComparison.CurrentCultureIgnoreCase))
            {
                return(null);
            }

            HandleCallbackQueryCommand del = async sender => await handler.HandleCallbackQStartNotify(sender, service);

            return(del);
        }
        public HandleCallbackQueryCommand Handle(CallbackData data, Service service, CallbackQueryHandler handler)
        {
            if (!(data is SettingsCallbackData))
            {
                return(null);
            }

            if (!data.Command.Equals(CallbackCommand.BLACKLIST_ACTION_COMMAND,
                                     StringComparison.CurrentCultureIgnoreCase))
            {
                return(null);
            }

            HandleCallbackQueryCommand del = async sender => await handler.HandleCallbackQBlacklistLabelAction(sender, data as SettingsCallbackData, service);

            return(del);
        }
        public HandleCallbackQueryCommand Handle(CallbackData data, Service service, CallbackQueryHandler handler)
        {
            if (!(data is SettingsCallbackData))
            {
                return(null);
            }

            if (!data.Command.Equals(CallbackCommand.PERMISSIONS_MENU_COMMAND,
                                     StringComparison.CurrentCultureIgnoreCase))
            {
                return(null);
            }

            HandleCallbackQueryCommand del = async sender => await handler.HandleCallbackQPermissionsMenu(sender);

            return(del);
        }
        public HandleCallbackQueryCommand Handle(CallbackData data, Service service, CallbackQueryHandler handler)
        {
            if (!(data is SettingsCallbackData))
            {
                return(null);
            }

            if (!data.Command.Equals(CallbackCommand.ADD_TO_IGNORE_COMMAND,
                                     StringComparison.CurrentCultureIgnoreCase))
            {
                return(null);
            }

            HandleCallbackQueryCommand del = async sender => await handler.HandleCallbackQAddToIgnore(sender);

            return(del);
        }
        public HandleCallbackQueryCommand Handle(CallbackData data, Service service, CallbackQueryHandler handler)
        {
            if (!(data is SettingsCallbackData))
            {
                return(null);
            }

            if (!data.Command.Equals(CallbackCommand.READ_AFTER_RECEIVING_COMMAND,
                                     StringComparison.CurrentCultureIgnoreCase))
            {
                return(null);
            }

            HandleCallbackQueryCommand del = async sender => await handler.HandleCallbackQReadAfterReceiving(sender, data as SettingsCallbackData);

            return(del);
        }
        public HandleCallbackQueryCommand Handle(CallbackData data, Service service, CallbackQueryHandler handler)
        {
            if (!(data is SettingsCallbackData))
            {
                return(null);
            }

            if (!data.Command.Equals(CallbackCommand.REVOKE_VIA_WEB_COMMAND,
                                     StringComparison.CurrentCultureIgnoreCase))
            {
                return(null);
            }

            HandleCallbackQueryCommand del = async sender => await handler.HandleCallbackQRevokePermissionsViaWeb(sender);

            return(del);
        }
        public HandleCallbackQueryCommand Handle(CallbackData data, Service service, CallbackQueryHandler handler)
        {
            if (!(data is SettingsCallbackData))
            {
                return(null);
            }

            if (!data.Command.Equals(CallbackCommand.LABEL_ACTIONS_BACK_COMMAND,
                                     StringComparison.CurrentCultureIgnoreCase))
            {
                return(null);
            }

            HandleCallbackQueryCommand del = async sender => await handler.HandleCallbackQBackToEditLabelsListMenu(sender, service);

            return(del);
        }
        public HandleCallbackQueryCommand Handle(CallbackData data, Service service, CallbackQueryHandler handler)
        {
            if (!(data is SettingsCallbackData))
            {
                return(null);
            }

            if (!data.Command.Equals(CallbackCommand.REMOVE_LABEL_COMMAND,
                                     StringComparison.CurrentCultureIgnoreCase))
            {
                return(null);
            }

            HandleCallbackQueryCommand del = async sender => await handler.HandleCallbackQRemoveLabel(sender, data as SettingsCallbackData, service);

            return(del);
        }
        public HandleCallbackQueryCommand Handle(CallbackData data, Service service, CallbackQueryHandler handler)
        {
            if (!(data is SettingsCallbackData))
            {
                return(null);
            }

            if (!data.Command.Equals(CallbackCommand.EDIT_LABEL_NAME_COMMAND,
                                     StringComparison.CurrentCultureIgnoreCase))
            {
                return(null);
            }

            HandleCallbackQueryCommand del = async sender => await handler.HandleCallbackQEditLabelName(sender);

            return(del);
        }
        public HandleCallbackQueryCommand Handle(CallbackData data, Service service, CallbackQueryHandler handler)
        {
            if (!(data is SettingsCallbackData))
            {
                return(null);
            }

            if (!data.Command.Equals(CallbackCommand.USE_WHITELIST_COMMAND,
                                     StringComparison.CurrentCultureIgnoreCase))
            {
                return(null);
            }

            HandleCallbackQueryCommand del = async sender => await handler.HandleCallbackQUseWhitelist(sender, service);

            return(del);
        }
        public HandleCallbackQueryCommand Handle(CallbackData data, Service service, CallbackQueryHandler handler)
        {
            if (!(data is SettingsCallbackData))
            {
                return(null);
            }

            if (!data.Command.EqualsAny(StringComparison.CurrentCultureIgnoreCase,
                                        CallbackCommand.LABELS_BACK_COMMAND,
                                        CallbackCommand.PERMISSIONS_BACK_COMMAND,
                                        CallbackCommand.IGNORE_BACK_COMMAND,
                                        CallbackCommand.ADDITIONAL_BACK_COMMAND
                                        ))
            {
                return(null);
            }

            HandleCallbackQueryCommand del = async sender => await handler.HandleCallbackQBackToMainMenu(sender);

            return(del);
        }