def get(cls): logger = HenriqueLogger.func_level2logger(cls.get, logging.DEBUG) sender_name = request.args.get(cls.Data.Field.SENDER_NAME) text_in = request.args.get(cls.Data.Field.TEXT) newline = request.args.get(cls.Data.Field.NEWLINE) logger.debug({"sender_name":sender_name, "text_in":text_in, "newline":newline}) if not HenriqueCommand.text2is_query(text_in): return None chatroom = ChatroomKakaotalk.chatroom() Chatroom.chatrooms2upsert([chatroom]) channel_user = ChannelUserKakaotalk.sender_name2channel_user(sender_name) ChannelUser.channel_users2upsert([channel_user]) packet = {KhalaPacket.Field.TEXT: text_in, KhalaPacket.Field.CHATROOM: Chatroom.chatroom2codename(chatroom), KhalaPacket.Field.CHANNEL_USER: ChannelUser.channel_user2codename(channel_user), KhalaPacket.Field.SENDER_NAME: sender_name, } logger.debug({"packet": packet,}) text_response = HenriquePacket.packet2response(packet) if not text_response: return None if cls.packet2skip_response(packet): # run packet but do not respond return None text_out = newline.join(text_response.splitlines()) if newline else text_response return text_out, 200
def entity2response_block(cls, entity, packet, ): logger = HenriqueLogger.func_level2logger(cls.packet2response, logging.DEBUG) chatroom = Chatroom.codename2chatroom(KhalaPacket.packet2chatroom(packet)) if Chatroom.chatroom2codename(chatroom) != ChatroomKakaotalk.codename(): return locale = Chatroom.chatroom2locale(chatroom) lang = LocaleTool.locale2lang(locale) v = FoxylibEntity.entity2value(entity) codename = ChatroomuserEntity.value_packet2codename(v, packet) logger.debug({"codename": codename, "entity": entity, "v": v, }) chatroomuser = Chatroomuser.codename2chatroomuser(codename) comments = Chatroomuser.chatroomuser2comments(chatroomuser) comment = choice(comments) if comments else None filepath = os.path.join(FILE_DIR, "tmplt.{}.part.txt".format(lang)) data = {"name": codename, "comment": comment, "str_aliases": ", ".join(Chatroomuser.chatroomuser2aliases(chatroomuser)), } text_out = str2strip(HenriqueJinja2.textfile2text(filepath, data)) return text_out
def row2chatroom(row): chatroom = merge_dicts([{col_top: str2strip(row[i])} for i, col_top in enumerate(top_row)], vwrite=vwrite_no_duplicate_key) if not Chatroom.chatroom2codename(chatroom): return None return chatroom
def packet2response(cls, packet): logger = HenriqueLogger.func_level2logger(cls.packet2response, logging.DEBUG) logger.debug({"packet":packet}) chatroom = Chatroom.codename2chatroom(KhalaPacket.packet2chatroom(packet)) if Chatroom.chatroom2codename(chatroom) != ChatroomKakaotalk.codename(): return text_in = KhalaPacket.packet2text(packet) # config = {HenriqueEntity.Config.Field.LOCALE: locale} # config = {HenriqueEntity.Config.Field.LOCALE: locale} # entity_list_raw = lchain(*[c.text2entity_list(text_in, config=config) for c in entity_classes]) # entity_list_chatroomuser = sorted(ChatroomuserEntity.text2entity_list(text_in), key=FoxylibEntity.entity2span) blocks = [cls.entity2response_block(entity, packet,) for entity in entity_list_chatroomuser] return Rowsblock.blocks2text(blocks)
def dict_codename2chatroom(cls): data_ll = ChatroomGooglesheets.sheetname2data_ll(cls.NAME) top_row = data_ll[0] def row2chatroom(row): chatroom = merge_dicts([{col_top: str2strip(row[i])} for i, col_top in enumerate(top_row)], vwrite=vwrite_no_duplicate_key) if not Chatroom.chatroom2codename(chatroom): return None return chatroom chatroom_list = lfilter(bool, map(row2chatroom, data_ll[1:])) h = merge_dicts([{Chatroom.chatroom2codename(chatroom): chatroom} for chatroom in chatroom_list], vwrite=vwrite_no_duplicate_key) return h