Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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
Exemplo n.º 3
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
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
    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