bottender-compose
Version:
An utility library for bottender and higher-order handlers
18 lines (12 loc) • 3.17 kB
JavaScript
;
const get = require('lodash/get');
const isEqual = require('lodash/isEqual');
exports.messenger = ['isMessage', 'isText', 'hasAttachment', 'isImage', 'isAudio', 'isVideo', 'isLocation', 'isFile', 'isFallback', 'isSticker', 'isLikeSticker', 'isQuickReply', 'isEcho', 'isPostback', 'isGamePlay', 'isOptin', 'isPayment', 'isCheckoutUpdate', 'isPreCheckout', 'isRead', 'isDelivery', 'isPayload', 'isPolicyEnforcement', 'isAppRoles', 'isStandby', 'isPassThreadControl', 'isTakeThreadControl', 'isRequestThreadControl', 'isRequestThreadControlFromPageInbox', 'isFromCustomerChatPlugin', 'isReferral', 'isBrandedCamera'];
exports.line = ['isMessage', 'isText', 'isImage', 'isVideo', 'isAudio', 'isLocation', 'isSticker', 'isFollow', 'isUnfollow', 'isJoin', 'isLeave', 'isPostback', 'isPayload', 'isBeacon', 'isAccountLink', 'isMemberJoined', 'isMemberLeft'];
exports.slack = ['isMessage', 'isChannelsMessage', 'isGroupsMessage', 'isImMessage', 'isMpimMessage', 'isText', 'isInteractiveMessage', 'isAppUninstalled', 'isChannelArchive', 'isChannelCreated', 'isChannelDeleted', 'isChannelHistoryChanged', 'isChannelRename', 'isChannelUnarchive', 'isDndUpdated', 'isDndUpdated_user', 'isEmailDomainChanged', 'isEmojiChanged', 'isFileChange', 'isFileCommentAdded', 'isFileCommentDeleted', 'isFileCommentEdited', 'isFileCreated', 'isFileDeleted', 'isFilePublic', 'isFileShared', 'isFileUnshared', 'isGridMigrationFinished', 'isGridMigrationStarted', 'isGroupArchive', 'isGroupClose', 'isGroupHistoryChanged', 'isGroupOpen', 'isGroupRename', 'isGroupUnarchive', 'isImClose', 'isImCreated', 'isImHistoryChanged', 'isImOpen', 'isLinkShared', 'isMemberJoinedChannel', 'isMemberLeftChannel', 'isPinAdded', 'isPinRemoved', 'isReactionAdded', 'isReactionRemoved', 'isStarAdded', 'isStarRemoved', 'isSubteamCreated', 'isSubteamMembersChanged', 'isSubteamSelfAdded', 'isSubteamSelfRemoved', 'isSubteamUpdated', 'isTeamDomainChange', 'isTeamJoin', 'isTeamRename', 'isTokensRevoked', 'isUrlVerification', 'isUserChange'];
exports.telegram = ['isMessage', 'isText', 'isAudio', 'isDocument', 'isGame', 'isPhoto', 'isSticker', 'isVideo', 'isVoice', 'isVideoNote', 'isContact', 'isLocation', 'isVenue', 'isEditedMessage', 'isChannelPost', 'isEditedChannelPost', 'isInlineQuery', 'isChosenInlineResult', 'isCallbackQuery', 'isPayload', 'isShippingQuery', 'isPreCheckoutQuery'];
exports.viber = ['isMessage', 'isText', 'isPicture', 'isVideo', 'isFile', 'isSticker', 'isContact', 'isURL', 'isLocation', 'isSubscribed', 'isUnsubscribed', 'isConversationStarted', 'isDelivered', 'isSeen', 'isFailed'];
exports.fb = ['isFeed', 'isStatus', 'isStatusAdd', 'isStatusEdited', 'isPost', 'isPostRemove', 'isComment', 'isCommentAdd', 'isCommentEdited', 'isCommentRemove', 'isLike', 'isLikeAdd', 'isLikeRemove', 'isReaction', 'isReactionAdd', 'isReactionEdit', 'isReactionRemove'];
exports.isTextMatch = text => context => !!(context.event.text && context.event.text.match(text));
exports.isPayloadMatch = payload => context => !!(context.event.payload && context.event.payload.match(payload));
exports.hasStateEqual = (path, state) => context => isEqual(get(context.state, path), state);