def handle_fb_dictionary(dct, msg, sender): if dct == 'urb': details = urban_dict.word_to_defn_messenger(msg) else: details = eng_dict.get_word_defns(msg, 'messenger') link = details.get('link', None) # 2 defns for urban dictionary as the definitions are too long # very often limit = 3 if dct != 'urb' else 2 for defn in details['defns'][:limit]: LOG.info(defn) messenger_utils.send_reply(sender, defn) if link: LOG.info('{}'.format(link)) messenger_utils.send_reply( sender, 'For more details visit {}'.format(link))
def messenger(): try: challenge = messenger_utils.check_challenge() if challenge: return challenge data = json.loads(request.data) entries = data['entry'] LOG.info(entries) text_and_users = messenger_utils.get_messenger_text_and_users() for inp in text_and_users: sender = inp['sender'] postback = inp.get('postback', None) msg = inp.get('msg', None) if msg == '__boo__': messenger_utils.send_reply(sender, '☄') continue if postback == 'HELP' or msg == 'help': for help_msg in messenger_help(): messenger_utils.send_reply(sender, help_msg) continue if postback == 'PREFERENCES': dct = messenger_utils.get_display_dct(sender['id']) reply = '{} is your default. This can be changed from the menu'.format( dct) messenger_utils.send_reply(sender, reply) continue if postback in {'URBAN_DICTIONARY', 'ENGLISH_DICTIONARY', 'EMOJI_DICTIONARY'}: messenger_utils.set_dct(sender['id'], postback) reply = 'Preferences updated' messenger_utils.send_reply(sender, reply) continue if msg is not None: dct, msg = messenger_utils.get_dct( sender_id=sender['id'], msg=msg) LOG.info(dct + "===" + msg) if dct in {'urb', 'eng'}: handle_fb_dictionary(dct, msg, sender) elif dct in {'emoji_search', 'emoji_info', 'emoji'}: handle_fb_emoji(dct, msg, sender) except Exception: LOG.print_exc("messenger fail") return Response()
def handle_fb_emoji(dct, msg, sender): if dct == 'emoji': replies = emoji_utils.emoji_all(msg) reply_groups = utils.split_to_groups(replies, 5) replies = ['\n'.join(group) for group in reply_groups] for reply in replies: messenger_utils.send_reply(recipient=sender, text=reply) elif dct == 'emoji_search': replies = emoji_utils.search_emojipedia(msg) reply_groups = utils.split_to_groups(replies, 5) replies = ['\n'.join(group) for group in reply_groups] for reply in replies: messenger_utils.send_reply(recipient=sender, text=reply) else: reply = emoji_utils.emoji_info(msg) messenger_utils.send_reply(recipient=sender, text=reply)