Exemplo n.º 1
0
    def get_super_tag_size(self, member_name):
        """
        获取超话人数
        :param member_name:
        :return:
        """
        cursor = self.conn.cursor()

        try:
            # 获取超话链接
            c = cursor.execute(
                """
                        select super_tag from member WHERE member_name=?
                    """, (member_name, ))
            super_tag = c.fetchone()[0]

            r = self.session.get(super_tag).json()
            if r['ok'] == 1:
                desc_more = r['data']['pageInfo']['desc_more'][0]
                desc_arr = desc_more.strip().split('\u3000')
                fans_number = int(desc_arr[2][2:])
                cur_date = util.convert_timestamp_to_timestr(time.time() *
                                                             1000)
                my_logger.debug('统计:成员: %s, 超话: %s, 人数: %d, 时间: %s',
                                member_name, super_tag, fans_number, cur_date)
                cursor.execute(
                    """
                        INSERT INTO `super_tag` (`member_name`, `link`, `size`, `date`) VALUES
                        (?, ?, ?, ?)
                        """, (member_name, super_tag, fans_number, cur_date))
                self.conn.commit()
        except Exception as e:
            my_logger.error(e)
        finally:
            cursor.close()
Exemplo n.º 2
0
def get_member_all_posts(member_id, next_id="0"):
    """
    获取成员全部动态
    :param member_id: 
    :param next_id: 
    :return: 
    """
    url = 'https://pocketapi.48.cn/posts/api/v1/posts/timeline/home/new'
    print('next_id: {}'.format(next_id))
    params = {"nextId": next_id, "userId": member_id}
    r = requests.post(url,
                      data=json.dumps(params),
                      headers=get_header(),
                      verify=False).json()
    if r['status'] == 200:
        next_id = r['content']['nextId']
        post_list = r['content']['postsInfo']

        for post in post_list:
            post = post['data']['postsInfo']
            print(util.convert_timestamp_to_timestr(int(post['createAt'])))
            print(handle_weibo_text(post['postContent'].rstrip('\n')))
            if 'previewImg' in post and post['previewImg']:
                print("图片:")
                for img in post['previewImg']:
                    print('https://source.48.cn/{}'.format(img['imgUrl']))

        get_member_all_posts(member_id, next_id)
Exemplo n.º 3
0
def draw_missed_card(context, modian_id, backer_money):
    """
    补抽卡
    :param context:
    :param modian_id:
    :param backer_money:
    :return:
    """
    from utils import util
    from modian.modian_card_draw import CardDrawHandler
    import time
    card_draw_handler = CardDrawHandler()
    card_draw_handler.read_config()
    money_is_digit = util.is_digit(backer_money)
    modian_id_is_digit = util.is_positive_integer(modian_id)
    # if not modian_id_is_digit:
    #     bot.send(context, '输入的摩点ID不符合规范,请重试~')
    #     return
    if not money_is_digit:
        bot.send(context, '输入的金额不符合规范,请重试~')
    try:
        report = card_draw_handler.draw(
            modian_id, '补抽用户', float(backer_money),
            util.convert_timestamp_to_timestr(int(time.time() * 1000)))
        bot.send(context, report)
    except:
        logger.error('补抽卡出现错误!')
Exemplo n.º 4
0
 def draw_missed_cards(self, modian_id, score=10):
     """
     补抽卡
     :param modian_id:
     :param score: 抽卡消耗的积分数量
     :return:
     """
     logger.info('积分抽卡,modian_id:{}, score:{}'.format(modian_id, score))
     import time
     if score < 15:
         return '消耗的积分必须要大于等于15!'
     if score % 15 != 0:
         return '消耗的积分必须是15的倍数!'
     current_score = int(self.get_current_score(modian_id))
     if current_score < score:
         return '桃叭ID:{}的当前积分: {},少于需要消耗的积分: {},不能补抽!'.format(modian_id, current_score, score)
     else:
         result = '桃叭ID:{},积分抽卡,当前积分-{}\n'.format(modian_id, score)
         mysql_util.query("""
                         INSERT INTO `t_card_score` (`modian_id`, `score`) VALUES 
                             (%s, %s)
                     """, (modian_id, -1 * score))
         money = int(score // 10) * 10.17
         result += self.draw(modian_id, '补抽用户', money, util.convert_timestamp_to_timestr(int(time.time() * 1000)))
         return result
Exemplo n.º 5
0
    def parse_member_live(self, response, member_id):
        """
        对直播列表进行处理,找到正在直播的指定成员
        :param member_id:
        :param response:
        :return:
        """
        rsp_json = json.loads(response)
        # DEBUG('keys of parse member live: %s', rsp_json['content'].keys())
        # 当前没有人在直播
        if 'liveList' not in rsp_json['content'].keys():
            # print 'no live'
            DEBUG('当前没有人在直播')
            return
        live_list = rsp_json['content']["liveList"]
        DEBUG('当前正在直播的人数: %d', len(live_list))
        # print '当前正在直播的人数: %d' % len(live_list)
        msg = ''
        # DEBUG('直播ID列表: %s', ','.join(self.member_live_ids))
        for live in live_list:
            live_id = live['liveId']
            # DEBUG(live.keys())
            # print '直播人: %s' % live['memberId']
            # DEBUG('直播人(response): %s, 类型: %s', live['memberId'], type(live['memberId']))
            # DEBUG('member_id(参数): %s, 类型: %s', member_id, type(member_id))
            DEBUG('memberId %s is in live: %s, live_id: %s', live['memberId'],
                  live['title'], live_id)
            DEBUG('stream path: %s', live['streamPath'])
            # DEBUG('member_live_ids list: %s', ','.join(self.member_live_ids))
            # DEBUG('live_id is in member_live_ids: %s', str(live_id in self.member_live_ids))
            if live['memberId'] == int(
                    member_id) and live_id not in self.member_live_ids:
                DEBUG('[被监控成员正在直播]member_id: %s, live_id: %', member_id,
                      live_id)
                start_time = util.convert_timestamp_to_timestr(
                    live['startTime'])
                stream_path = live['streamPath']  # 流地址
                sub_title = live['subTitle']  # 直播名称
                live_type = live['liveType']
                url = 'https://h5.48.cn/2017appshare/memberLiveShare/index.html?id=%s' % live_id
                if live_type == 1:  # 露脸直播
                    msg += '你的小宝贝儿开露脸直播了: %s\n直播链接: %s\n开始时间: %s' % (
                        sub_title, url, start_time)
                elif live_type == 2:  # 电台直播
                    msg += '你的小宝贝儿开电台直播了: %s\n直播链接: %s\n开始时间: %s' % (
                        sub_title, url, start_time)
                self.member_live_ids.append(live_id)

                # 录制直播
                # name = '%s_%s' % (member_id, live['startTime'])
                # # self.download.setName(name)
                # self.live_urls.put(name)
                # self.live_urls.put(stream_path)

        DEBUG(msg)
        if msg and len(self.member_live_groups) > 0:
            QQHandler.send_to_groups(self.member_live_groups, msg)
Exemplo n.º 6
0
    def parse_room_comment(self, response, task):
        """
        对房间评论进行处理
        :param response:
        :param task:
        :return:
        """
        rsp_json = json.loads(response)
        msgs = rsp_json['content']['message']
        logger.debug('parse room comment reponse: %s', response)
        message = ''
        for msg in msgs:
            extInfo = json.loads(msg['extInfo'])
            msg_id = msg['msgidClient']
            total_msg_type = msg['msgType']
            msg_type = extInfo['messageType']
            msg_time = util.convert_timestamp_to_timestr(msg['msgTime'])

            if msg_id in task.member_room_comment_ids:
                continue
            logger.debug('该评论{}不在队列中,需要打印'.format(msg_id))
            task.member_room_comment_ids.append(msg_id)
            user_id = extInfo['user']['nickName']

            if total_msg_type == 'TEXT':
                if msg_type == 'TEXT':
                    logger.debug('房间评论')
                    logger.debug('【房间评论】[%s]-%s: %s\n' %
                                 (msg_time, user_id, extInfo['text']))
                elif msg_type == 'PRESENT_TEXT':
                    gift_num = extInfo['giftInfo']['giftNum']
                    gift_name = extInfo['giftInfo']['giftName']
                    if extInfo['giftInfo']['isVote']:
                        logger.debug('投票')
                        message = '感谢{}送出的{}票,爱你呦~\n【{}】'.format(
                            user_id, gift_num, msg_time)
                        logger.debug(message)
                        if message and len(task.member_room_msg_groups) > 0:
                            pass
                            # QQHandler.send_to_groups(task.member_room_msg_groups, message)
                    else:
                        logger.debug('礼物')
                        logger.debug('感谢{}送出的{}个{},爱你呦~'.format(
                            user_id, gift_num, gift_name))
                else:
                    logger.debug('其他类型评论')

        # logger.info('message: %s', message)
        # logger.debug('length of comment groups: %d', len(task.member_room_comment_msg_groups))
        logger.debug('房间评论队列: %s', len(task.member_room_comment_ids))
Exemplo n.º 7
0
def parse_room_comments(msgs, end_time):
    try:
        for msg in msgs:
            extInfo = json.loads(msg['extInfo'])
            msg_id = msg['msgidClient']  # 消息id

            msg_time_0 = msg["msgTime"]
            if msg_time_0 < end_time:
                return
            if 'roleId' in extInfo['user'].keys():
                if extInfo['user']['roleId'] != 1:
                    continue

            msg_time = util.convert_timestamp_to_timestr(msg["msgTime"])
            if 'userId' in extInfo['user'].keys():
                user_id = int(extInfo['user']['userId'])
            else:
                user_id = 0
            if 'gender' in extInfo['user'].keys():
                gender = int(extInfo['user']['gender'])
            else:
                gender = 0
            user_name = extInfo['user']['nickName']
            if 'level' in extInfo['user'].keys():
                level = int(extInfo['user']['level'])
            else:
                level = 1
            if 'vip' in extInfo['user'].keys():
                is_vip = extInfo['user']['vip']
            else:
                is_vip = False
            if 'Verification' in extInfo['user'].keys():
                verification = extInfo['user']['Verification']
            else:
                verification = False
            room_id = int(extInfo['sourceId'])

            fan = Fan(user_id, user_name, level, gender, is_vip, verification)
            comment_rst[room_id].add(fan)

            if fan not in fan_rst.keys():
                fan_rst[fan] = set()
            fan_rst[fan].add(room_id)

    except Exception as e:
        print(e)
    def update_group_size(self, member_name):
        """
        获取群人数
        :param member_name:
        :return:
        """
        cursor = self.conn.cursor()
        DEBUG('更新群信息')
        QQHandler.update()

        try:
            # 获取群号
            DEBUG('获取成员群号')
            c = cursor.execute(
                """
                select group_number from member WHERE member_name=?
            """, (member_name, ))
            group_number = c.fetchone()[0]
            DEBUG('群号: %s', group_number)
            number = QQHandler.get_group_number(str(group_number))
            DEBUG('群%s人数: %s', group_number, number)

            # number = 800
            cur_date = util.convert_timestamp_to_timestr(time.time() * 1000)
            DEBUG('记录时间: %s', cur_date)

            DEBUG('统计:成员: %s, 群号: %s, 人数: %s, 时间: %s', member_name,
                  group_number, number, cur_date)
            cursor.execute(
                """
            INSERT INTO `group` (`member_name`, `group_number`, `group_size`, `date`) VALUES
            (?, ?, ?, ?)
            """, (member_name, group_number, number, cur_date))
            self.conn.commit()
        except Exception as e:
            ERROR(e)
        finally:
            cursor.close()
    def get_super_tag_size(self, member_name):
        """
        获取超话人数
        :param member_name:
        :return:
        """
        cursor = self.conn.cursor()

        try:
            # 获取超话链接
            c = cursor.execute(
                """
                        select super_tag from member WHERE member_name=?
                    """, (member_name, ))
            super_tag = c.fetchone()[0]

            r = self.session.get(super_tag)
            soup = BeautifulSoup(r.content, 'lxml')

            tb_counter = soup.find_all(class_='tb_counter')[0]
            fans_number = tb_counter.find_all(
                class_='S_line1')[2].find_all('strong').contents[0]

            cur_date = util.convert_timestamp_to_timestr(time.time() * 1000)

            DEBUG('统计:成员: %s, 超话: %s, 人数: %d, 时间: %s', member_name, super_tag,
                  fans_number, cur_date)
            cursor.execute(
                """
                    INSERT INTO `super_tag` (`member_name`, `link`, `size`, `date`) VALUES
                    (?, ?, ?, ?)
                    """, (member_name, super_tag, fans_number, cur_date))
            self.conn.commit()
        except Exception as e:
            ERROR(e)
        finally:
            cursor.close()
Exemplo n.º 10
0
def parse_room_msg(msgs, end_time):
    try:
        for msg in msgs:
            extInfo = json.loads(msg['extInfo'])
            msg_id = msg['msgidClient']  # 消息id
            # rst = cursor.execute("""
            #     SELECT * FROM 'room_message' WHERE message_id=?
            # """, msg_id)

            msg_time_0 = msg["msgTime"]
            if msg_time_0 < end_time:
                return

            msg_time = util.convert_timestamp_to_timestr(msg["msgTime"])
            user_id = extInfo['user']['userId']
            user_name = extInfo['user']['nickName']
            room_id = int(extInfo['roomId'])
            # if int(user_id) != member_messages['id']:
            #     continue
            message_rst[room_id] += 1
            # print('extInfo.keys():' + ','.join(extInfo.keys()))

    except Exception as e:
        print(e)
Exemplo n.º 11
0
    def parse_order_details(self, orders, modian_entity):
        if len(self.order_queues[modian_entity.pro_id]) == 0 and len(
                orders) == 0:
            my_logger.debug('订单队列为空')
            return
        jiebang_activities = global_config.MODIAN_JIEBANG_ACTIVITIES[
            modian_entity.pro_id]
        flag_activities = global_config.MODIAN_FLAG_ACTIVITIES[
            modian_entity.pro_id]
        count_flag_activities = global_config.MODIAN_COUNT_FLAG_ACTIVITIES[
            modian_entity.pro_id]

        # 查询集资情况
        target, current, pro_name, backer_count = self.get_current_and_target(
            modian_entity)
        project_info = '当前进度: %s元, 目标金额: %s元' % (current, target)

        modian_entity.current = current
        modian_entity.title = pro_name
        modian_entity.target = target
        modian_entity.support_num = backer_count
        my_logger.debug('size of order %s queue: %s', modian_entity.pro_id,
                        len(self.order_queues[modian_entity.pro_id]))

        for order in orders:
            user_id = order['user_id']
            nickname = order['nickname']
            pay_time = order['pay_time']
            backer_money = order['backer_money']

            oid = uuid.uuid3(uuid.NAMESPACE_OID, str(user_id) + pay_time)
            my_logger.debug('oid: %s', oid)

            if oid in self.order_queues[modian_entity.pro_id]:
                continue
            my_logger.debug('项目%s队列长度: %s', modian_entity.pro_id,
                            len(self.order_queues[modian_entity.pro_id]))

            # 每次需要更新一下昵称
            try:
                # supporter = Supporter(id=user_id, name=nickname)
                # self.alchemy_session.merge(supporter)
                mysql_util.query(
                    """
                                        INSERT INTO `supporter` (`id`, `name`) VALUES (%s, %s)  ON DUPLICATE KEY
                                            UPDATE `name`=%s
                                        """, (user_id, nickname, nickname))
            except Exception as e:
                my_logger.exception(e)

            try:
                # 创建对象
                # modian_order = ModianOrder(id=str(oid), supporter_id=user_id, backer_money=backer_money, pay_time=pay_time,
                #                            pro_id=modian_entity.pro_id)
                # self.alchemy_session.merge(modian_order)
                mysql_util.query(
                    """
                                    INSERT INTO `order` (`id`,`supporter_id`,`backer_money`,`pay_time`, `pro_id`) 
                                    VALUES (%s, %s, %s, %s, %s) ON DUPLICATE KEY
                                            UPDATE `id`=%s
                                """,
                    (str(oid), user_id, backer_money, pay_time,
                     modian_entity.pro_id, str(oid)))
            except Exception as e:
                my_logger.exception(e)

            msg = '感谢 %s(%s) 支持了%s元, %s\n' % (
                nickname, user_id, backer_money,
                util.random_str(global_config.MODIAN_POSTSCRIPTS))
            daka_rank, support_days = self.find_user_daka_rank(
                user_id, modian_entity.pro_id)

            if daka_rank != -1 and support_days:
                msg += '当前项目已打卡%s天\n' % support_days

            if modian_entity.need_display_rank is True:
                jizi_rank, backer_money = self.find_user_jizi_rank(
                    user_id, modian_entity.pro_id)
                if jizi_rank != -1:
                    msg += '当前项目已集资%s元, 排名: %s' % (backer_money, jizi_rank)
            else:
                pass
            # 统计当前人数
            msg += '当前集资人数: %s\n' % backer_count

            # 抽卡播报
            card_report = ''
            if global_config.MODIAN_CARD_DRAW:
                card_report = self.card_draw_handler.draw(
                    user_id, nickname, backer_money, pay_time)
            '''接棒相关'''
            my_logger.debug('接棒情况更新')
            for jiebang in jiebang_activities:
                # if jiebang.start_time > time.time():
                #     continue
                my_logger.debug('接棒活动详情: 【%s】', jiebang.name)
                my_logger.debug('集资金额: %s, 接棒最小金额: %s', backer_money,
                                jiebang.min_stick_amount)
                if backer_money >= jiebang.min_stick_amount:

                    stick_num = util.compute_stick_num(
                        jiebang.min_stick_amount, backer_money)
                    jiebang.current_stick_num += stick_num

                    jiebang.last_record_time = util.convert_timestamp_to_timestr(
                        int(time.time() * 1000))
                    # 数据库也要更新
                    try:
                        mysql_util.query(
                            """
                            UPDATE jiebang SET `current_stick_num`=%s, `last_record_time`=%s WHERE `name`=%s
                        """, (jiebang.current_stick_num,
                              jiebang.last_record_time, jiebang.name))
                    except Exception as e:
                        my_logger.error('更新接棒数据失败')
                        my_logger.exception(e)
                    my_logger.debug('数据库接棒数据更新完成')
                    test_msg = ''
                    if jiebang.need_detail == 1:
                        test_msg = '【%s】, 当前第%s棒, 目标%s棒\n' \
                                   % (jiebang.name, jiebang.current_stick_num, jiebang.target_stick_num)
                    elif jiebang.need_detail == 0:
                        test_msg = '【%s】\n' % jiebang.name
                    elif jiebang.need_detail == 2:
                        test_msg = '【%s】, 当前第%s棒\n' \
                                   % (jiebang.name, jiebang.current_stick_num)
                    elif jiebang.need_detail == 3:
                        if stick_num > 1:
                            test_msg = '抽奖号: {}~{}\n'.format(
                                jiebang.current_stick_num - stick_num + 1,
                                jiebang.current_stick_num)
                        else:
                            test_msg = '抽奖号: {}\n'.format(
                                jiebang.current_stick_num)
                    my_logger.debug(test_msg)
                    if len(test_msg) > 0:
                        msg += test_msg
                        QQHandler.send_to_groups(['483548995'], test_msg)
            '''金额类flag相关'''
            my_logger.debug('flag情况更新')
            flag_test_msgs = ''
            for flag in flag_activities:
                my_logger.debug('Flag活动详情: %s', flag.name)
                my_logger.debug('Flag金额: %s, 结束时间: %s',
                                flag.target_flag_amount, flag.end_time)
                diff = flag.target_flag_amount - current
                test_msgs = '【%s】, 目标金额: %s元, ' % (flag.name,
                                                   flag.target_flag_amount)
                if diff > 0:
                    test_msgs += '距离目标还差%s元\n' % round(diff, 2)
                    flag_test_msgs += test_msgs
                else:
                    test_msgs += '已经达成目标\n'
            my_logger.debug(flag_test_msgs)
            if len(flag_test_msgs) > 0:
                QQHandler.send_to_groups(['483548995'], flag_test_msgs)
                # msg += flag_test_msgs
            '''人头类flag相关'''
            my_logger.debug('人头flag情况更新')
            count_flag_test_msgs = ''
            for flag in count_flag_activities:
                my_logger.debug('人头Flag活动详情: %s', flag.name)
                my_logger.debug('人头Flag目标: %s, 开始时间: %s, 结束时间: %s',
                                flag.target_flag_amount, flag.start_time,
                                flag.end_time)
                target = flag.target_flag_amount

                # 统计当前人数
                rst = mysql_util.select_one(
                    """
                    select count(distinct(`supporter_id`)) from `order` 
                    where `pro_id` = %s and `pay_time` <= %s and `pay_time` >= %s
                """, (modian_entity.pro_id, flag.end_time, flag.start_time))

                # 目标人数为0,代表特殊类flag,只报人数
                if target == 0:
                    count_flag_test_msgs += '【%s】, 当前人数: %s ' % (flag.name,
                                                                 rst[0])
                else:
                    count_flag_test_msgs += '【%s】, 当前人数: %s, 目标人数: %s ' % (
                        flag.name, rst[0], flag.target_flag_amount)

            my_logger.debug(count_flag_test_msgs)
            if len(count_flag_test_msgs) > 0:
                QQHandler.send_to_groups(['483548995'], count_flag_test_msgs)
                # msg += flag_test_msgs

            msg += '%s\n集资项目: %s\n链接: %s\n' % (project_info, pro_name,
                                               modian_entity.link)
            # msg += jizi_pk_report

            my_logger.info(msg)
            if global_config.USING_COOLQ_PRO is True:
                my_logger.debug('使用酷Q PRO发送图片')
                msg += '\n[CQ:image,file=http://wx1.sinaimg.cn/large/439a9f3fgy1fpllweknr6j201i01g0lz.jpg]\n'

            # if global_config.MODIAN_NEED_DISPLAY_PK:
            #     msg += self.pk_modian_activity()

            QQHandler.send_to_groups(modian_entity.broadcast_groups, msg)
            if card_report:
                QQHandler.send_to_groups(modian_entity.broadcast_groups,
                                         card_report)
                # QQHandler.send_to_groups(['483548995'], card_report)

            self.order_queues[modian_entity.pro_id].add(oid)

        # 更新接棒的数据库
        try:
            my_logger.debug('更新接棒活动信息:')
            for jiebang in jiebang_activities:
                my_logger.debug(
                    'current_stick_num: %s, last_record_time: %s, name: %s',
                    jiebang.current_stick_num, jiebang.last_record_time,
                    jiebang.name)
                mysql_util.query(
                    """
                    UPDATE jiebang SET current_stick_num=%s WHERE name=%s
                """, (jiebang.current_stick_num, jiebang.name))

        except Exception as e:
            my_logger.exception(e)
Exemplo n.º 12
0
def _get_room_msg(member_id, room_id, last_time, limit):
    time.sleep(10)
    url = 'https://pocketapi.48.cn/im/api/v1/chatroom/msg/list/homeowner'
    params = {
        "ownerId": member_id,
        "roomId": room_id,
        "nextTime": last_time
    }
    try:
        r = requests.post(url, data=json.dumps(params), headers=get_header(), verify=False).text
    except Exception as e:
        print(e)

    rsp_json = json.loads(r)
    msgs = rsp_json['content']['message']
    if len(msgs) == 0:
        return -1
    cursor = conn.cursor()
    msg_time = last_time

    try:
        for msg in msgs:
            extInfo = json.loads(msg['extInfo'])
            msg_id = msg['msgidClient']  # 消息id
            # rst = cursor.execute("""
            #     SELECT * FROM 'room_message' WHERE message_id=?
            # """, msg_id)

            msg_time = util.convert_timestamp_to_timestr(msg["msgTime"])
            user_id = extInfo['user']['userId']
            user_name = extInfo['user']['nickName']

            # print('extInfo.keys():' + ','.join(extInfo.keys()))
            if msg['msgType'] == MessageType.TEXT:  # 文字消息
                text_message_type = extInfo['messageType'].strip()
                if text_message_type == MessageType.TEXT:  # 普通消息
                    print('普通消息: %s' % extInfo['text'])
                    save_msg_to_db(cursor, 100, msg_id, user_id, user_name, msg_time, extInfo['text'])
                elif text_message_type == TextMessageType.REPLY:  # 翻牌消息
                    print('翻牌')
                    member_msg = extInfo['text']
                    fanpai_msg = extInfo['replyText']
                    fanpai_id = extInfo['replyName']
                    if fanpai_id:
                        message = ('【翻牌】[%s]-%s: %s\n【被翻牌】%s: %s\n' % (
                            msg_time, user_name, member_msg, fanpai_id, fanpai_msg))
                        save_msg_to_db(cursor, 101, msg_id, user_id, user_name, msg_time, member_msg,
                                       fanpai_msg, fanpai_id)
                    else:
                        message = ('【翻牌】[%s]-%s: %s\n【被翻牌】%s\n' % (
                            msg_time, user_name, member_msg, fanpai_msg))
                        save_msg_to_db(cursor, 101, msg_id, user_id, user_name, msg_time, member_msg, fanpai_msg)

                    print(message)
                elif text_message_type == TextMessageType.LIVEPUSH:  # 露脸直播
                    print('露脸直播')
                    live_title = extInfo['liveTitle']
                    live_id = extInfo['liveId']
                    print(live_title + ' ' + live_id)
                    save_msg_to_db(cursor, 102, msg_id, user_id, user_name, msg_time, live_title)
                elif text_message_type == TextMessageType.VOTE:  # 投票
                    logger.debug('投票消息')
                    vote_content = extInfo['text']
                    message = '【发起投票】{}: {}\n'.format(user_name, vote_content)
                    print(message)
                    save_msg_to_db(cursor, 104, msg_id, user_id, user_name, msg_time, vote_content)
                elif text_message_type == TextMessageType.FLIPCARD:
                    print('付费翻牌功能')
                    content = extInfo['question']

                    question_id = extInfo['questionId']
                    answer_id = extInfo['answerId']
                    source = extInfo['sourceId']
                    answer = extInfo['answer']

                    fan_name = get_idol_flip_name(answer_id, question_id)
                    if fan_name:
                        print('付费翻牌id: {}'.format(fan_name))
                        flip_message = ('【问】%s: %s\n【答】%s: %s\n翻牌时间: %s\n' % (
                            fan_name, content, user_name, answer, msg_time))
                        save_msg_to_db(cursor, 105, msg_id, user_id, user_name, msg_time, answer, content, fan_name)
                    else:
                        flip_message = ('【问】%s\n【答】%s: %s\n翻牌时间: %s\n' % (
                            content, user_name, answer, msg_time))
                        save_msg_to_db(cursor, 105, msg_id, user_id, user_name, msg_time, answer, content)
                    message = flip_message
                    print(message)
                elif text_message_type == TextMessageType.PASSWORD_REDPACKAGE:
                    print('红包消息')
                    content = '【红包】{}'.format(extInfo['redPackageTitle'])
                    print(content)
                    save_msg_to_db(cursor, 106, msg_id, user_id, user_name, msg_time, content)
            elif msg['msgType'] == MessageType.IMAGE:  # 图片消息
                print('图片')
                bodys = json.loads(msg['bodys'])
                if 'url' in bodys.keys():
                    url = bodys['url']
                    message = ('【图片】[%s]-%s: %s\n' % (msg_time, user_name, url))
                    print(message)
                    save_msg_to_db(cursor, 200, msg_id, user_id, user_name, msg_time, url)
            elif msg['msgType'] == MessageType.AUDIO:  # 语音消息
                print('语音消息')
                bodys = json.loads(msg['bodys'])
                if 'url' in bodys.keys():
                    url = bodys['url']
                    message = ('【语音】[%s]-%s: %s\n' % (msg_time, user_name, url))
                    print(message)
                save_msg_to_db(cursor, 201, msg_id, user_id, user_name, msg_time, url)
            elif msg['msgType'] == MessageType.VIDEO:  # 小视频
                print('房间小视频')
                bodys = json.loads(msg['bodys'])
                if 'url' in bodys.keys():
                    url = bodys['url']
                    message = ('【小视频】[%s]-%s: %s\n' % (msg_time, user_name, url))
                    print(message)
                    save_msg_to_db(cursor, 202, msg_id, user_id, user_name, msg_time, url)
            elif msg['msgType'] == MessageType.EXPRESS:  # 大表情
                logger.debug('大表情')
                emotion_name = extInfo['emotionName']
                print(emotion_name)
                save_msg_to_db(cursor, 203, msg_id, user_id, user_name, msg_time, emotion_name)
            msg_time = msg['msgTime']
    except Exception as e:
        print(e)
    finally:
        conn.commit()
        cursor.close()
        return msg_time
Exemplo n.º 13
0
def parse_room_msg(msgs, end_time):
    try:
        for msg in msgs:
            extInfo = json.loads(msg['extInfo'])
            msg_id = msg['msgidClient']  # 消息id
            # rst = cursor.execute("""
            #     SELECT * FROM 'room_message' WHERE message_id=?
            # """, msg_id)

            msg_time_0 = msg["msgTime"]
            if msg_time_0 < end_time:
                return

            msg_time = util.convert_timestamp_to_timestr(msg["msgTime"])
            user_id = extInfo['user']['userId']
            user_name = extInfo['user']['nickName']
            # if int(user_id) != member_messages['id']:
            #     continue
            # print('extInfo.keys():' + ','.join(extInfo.keys()))
            if msg['msgType'] == MessageType.TEXT:  # 文字消息
                text_message_type = extInfo['messageType'].strip()
                if text_message_type == MessageType.TEXT:  # 普通消息
                    print('普通消息: %s' % extInfo['text'])
                    member_messages['100'] += 1
                elif text_message_type == TextMessageType.REPLY:  # 翻牌消息
                    print('翻牌')
                    member_msg = extInfo['text']
                    fanpai_msg = extInfo['replyText']
                    fanpai_id = extInfo['replyName']
                    if fanpai_id:
                        message = ('【翻牌】[%s]-%s: %s\n【被翻牌】%s: %s\n' %
                                   (msg_time, user_name, member_msg, fanpai_id,
                                    fanpai_msg))
                    else:
                        message = (
                            '【翻牌】[%s]-%s: %s\n【被翻牌】%s\n' %
                            (msg_time, user_name, member_msg, fanpai_msg))
                    print(message)
                    member_messages['101'] += 1
                elif text_message_type == TextMessageType.LIVEPUSH:  # 露脸直播
                    print('露脸直播')
                    live_title = extInfo['liveTitle']
                    live_id = extInfo['liveId']
                    print(live_title + ' ' + live_id)
                    member_messages['102'] += 1
                elif text_message_type == TextMessageType.VOTE:  # 投票
                    print('投票消息')
                    vote_content = extInfo['text']
                    message = '【发起投票】{}: {}\n'.format(user_name, vote_content)
                    print(message)
                    member_messages['104'] += 1
                elif text_message_type == TextMessageType.FLIPCARD:
                    print('付费翻牌功能')
                    content = extInfo['question']
                    question_id = extInfo['questionId']
                    answer_id = extInfo['answerId']
                    source = extInfo['sourceId']
                    answer = extInfo['answer']

                    message = '【问】{}\n【答】{}'.format(content, answer)
                    print(message)
                    member_messages['105'] += 1
                elif text_message_type == TextMessageType.PASSWORD_REDPACKAGE:
                    print('红包消息')
                    content = '【红包】{}'.format(extInfo['redPackageTitle'])
                    print(content)
                    member_messages['106'] += 1
            elif msg['msgType'] == MessageType.IMAGE:  # 图片消息
                print('图片')
                bodys = json.loads(msg['bodys'])
                if 'url' in bodys.keys():
                    url = bodys['url']
                    message = ('【图片】[%s]-%s: %s\n' %
                               (msg_time, user_name, url))
                    print(message)
                    member_messages['200'] += 1
                    img_name = './口袋图/{}.png'.format(msg_time)
                    html = requests.get(url, verify=False)
                    with open(img_name, 'wb') as f:
                        f.write(html.content)
                    f.close()
            elif msg['msgType'] == MessageType.AUDIO:  # 语音消息
                print('语音消息')
                bodys = json.loads(msg['bodys'])
                if 'url' in bodys.keys():
                    url = bodys['url']
                    message = ('【语音】[%s]-%s: %s\n' %
                               (msg_time, user_name, url))
                    print(message)
                    member_messages['201'] += 1
            elif msg['msgType'] == MessageType.VIDEO:  # 小视频
                print('房间小视频')
                bodys = json.loads(msg['bodys'])
                if 'url' in bodys.keys():
                    url = bodys['url']
                    message = ('【小视频】[%s]-%s: %s\n' %
                               (msg_time, user_name, url))
                    print(message)
                    member_messages['202'] += 1
            elif msg['msgType'] == MessageType.EXPRESS:  # 大表情
                print('大表情')
                emotion_name = extInfo['emotionName']
                print(emotion_name)
                member_messages['203'] += 1
    except Exception as e:
        print(e)
Exemplo n.º 14
0
    def pocket_msgs(self):
        from pocket48 import others
        cursor = self.conn.cursor()
        today = datetime.date.today().strftime('%Y-%m-%d %H:%M:%S')
        today_timestamp = int(util.convert_timestr_to_timestamp(today)) * 1000
        yesterday_timestamp = today_timestamp - 60 * 24 * 60 * 1000
        room_list = others.get_room_list()

        try:
            for room in room_list:
                others.member_messages = {
                    'id': room['id'],
                    'name': room['name'],
                    'room_id': room['room_id'],
                    '100': 0,
                    '101': 0,
                    '102': 0,
                    '103': 0,
                    '104': 0,
                    '105': 0,
                    '106': 0,
                    '200': 0,
                    '201': 0,
                    '202': 0,
                    '203': 0
                }
                my_logger.debug(room['name'])
                if room['id'] in [63, 327683, 327682, 5973]:
                    continue

                others.get_room_history_msg(room['id'], room['room_id'],
                                            today_timestamp - 1,
                                            yesterday_timestamp)

                my_logger.debug(others.member_messages)
                cur_date = util.convert_timestamp_to_timestr(time.time() *
                                                             1000)

                sum = others.member_messages['100'] + others.member_messages[
                    '101'] + others.member_messages[
                        '102'] + others.member_messages[
                            '103'] + others.member_messages[
                                '104'] + others.member_messages[
                                    '105'] + others.member_messages[
                                        '106'] + others.member_messages[
                                            '201'] + others.member_messages[
                                                '202'] + others.member_messages[
                                                    '203']
                cursor.execute(
                    """
                    INSERT INTO `pocket_message` (`member_id`, `room_id`, `member_name`, `text`, `reply`, `live`, `vote`,
                    `idol_flip`, `red_packet`, `pic`, `voice`, `video`, `total_num`, `update_time`) VALUES 
                    (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
                """, (others.member_messages['id'],
                      others.member_messages['room_id'],
                      others.member_messages['name'],
                      others.member_messages['100'],
                      others.member_messages['101'],
                      others.member_messages['102'],
                      others.member_messages['104'],
                      others.member_messages['105'],
                      others.member_messages['106'],
                      others.member_messages['200'],
                      others.member_messages['201'],
                      others.member_messages['202'], sum, cur_date))
            self.conn.commit()
        except Exception as e:
            my_logger.exception(e)
        finally:
            cursor.close()
Exemplo n.º 15
0
    def get_bilibili_stat(self):
        """
        获取b站数据
        :return:
        """
        cursor = self.conn.cursor()
        try:
            bilibili_path = os.path.join(os.path.dirname(BASE_DIR), 'data',
                                         'bilibili.json')
            member_json = json.load(open(bilibili_path,
                                         encoding='utf8'))['stats']
            for member in member_json:
                bilibili_id = member['bid']
                member_name = member['name']
                my_logger.info(member_name)

                url1 = 'https://api.bilibili.com/x/relation/stat?vmid={}&jsonp=jsonp'.format(
                    bilibili_id)
                header = {
                    'Referer':
                    'https://space.bilibili.com/{}'.format(bilibili_id),
                    'User-Agent':
                    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'
                }
                rsp = self.session.get(url1, headers=header).json()
                fan_number = rsp['data']['follower']

                try:

                    url2 = 'https://api.bilibili.com/x/space/upstat?mid={}&jsonp=jsonp'.format(
                        bilibili_id)
                    rsp_json = self.session.get(
                        url2,
                        headers=header,
                        cookies={
                            'SESSDATA': 'db49e46a%2C1614611003%2C81dfe*91'
                        }).json()

                    view = rsp_json['data']['archive']['view']
                    print(rsp_json)
                except Exception as e:
                    my_logger.exception(e)
                    view = 0

                url3 = 'https://api.bilibili.com/x/space/acc/info?mid={}&jsonp=jsonp'.format(
                    bilibili_id)
                rsp = self.session.get(url3, headers=header).json()
                bilibili_name = rsp['data']['name']

                cur_date = util.convert_timestamp_to_timestr(time.time() *
                                                             1000)

                cursor.execute(
                    """
                    INSERT INTO `bilibili` (`member_name`, `bilibili_id`, `bilibili_name`, `fans_num`, `video_view`, `update_time`)
                    VALUES
                    (?, ?, ?, ?, ?, ?)
                """, (member_name, bilibili_id, bilibili_name, fan_number,
                      view, cur_date))
                self.conn.commit()
                time.sleep(2)
        except Exception as e:
            my_logger.exception(e)
        finally:
            cursor.close()
Exemplo n.º 16
0
    def parse_room_msg(self, response, task):
        """
        对成员消息进行处理
        :param response:
        :param task:
        :return:
        """
        logger.debug('parse room msg response: %s', response)
        rsp_json = json.loads(response)
        msgs = rsp_json['content']['message']
        cursor = self.conn.cursor()

        message = ''
        try:
            for msg in msgs:
                extInfo = json.loads(msg['extInfo'])
                msg_id = msg['msgidClient']  # 消息id

                if msg_id in task.member_room_msg_ids:
                    continue
                logger.debug('session role: {}'.format(extInfo['sessionRole']))
                if int(extInfo['sessionRole']) != 2:  # 其他成员的消息
                    task.unread_other_member_msg_amount += 1
                    member_name = extInfo['user']['nickName']
                    if member_name == '19岁了还是小可爱':
                        member_name = 'YBY'
                    if member_name not in task.other_members_names:
                        task.other_members_names.append(member_name)
                else:
                    task.unread_msg_amount += 1

                logger.debug('成员消息')
                task.member_room_msg_ids.append(msg_id)

                msg_time = util.convert_timestamp_to_timestr(msg["msgTime"])
                user_id = extInfo['user']['userId']
                user_name = extInfo['user']['nickName']

                logger.debug('extInfo.keys():' + ','.join(extInfo.keys()))
                if msg['msgType'] == MessageType.TEXT:  # 文字消息
                    text_message_type = extInfo['messageType'].strip()
                    if text_message_type == TextMessageType.TEXT:  # 普通消息
                        logger.debug('普通消息')
                        message = (
                            '【成员消息】[%s]-%s: %s\n' %
                            (msg_time, user_name, extInfo['text'])) + message
                        self.save_msg_to_db(100, msg_id, user_id, user_name,
                                            msg_time, extInfo['text'])
                    elif text_message_type == TextMessageType.REPLY:  # 翻牌消息
                        logger.debug('翻牌')
                        member_msg = extInfo['text']
                        fanpai_msg = extInfo['replyText']
                        fanpai_id = extInfo['replyName']
                        if fanpai_id:
                            message = ('【翻牌】[%s]-%s: %s\n【被翻牌】%s: %s\n' %
                                       (msg_time, user_name, member_msg,
                                        fanpai_id, fanpai_msg)) + message
                            self.save_msg_to_db(101, msg_id, user_id,
                                                user_name, msg_time,
                                                member_msg, fanpai_msg,
                                                fanpai_id)
                        else:
                            message = ('【翻牌】[%s]-%s: %s\n【被翻牌】%s\n' %
                                       (msg_time, user_name, member_msg,
                                        fanpai_msg)) + message
                            self.save_msg_to_db(101, msg_id, user_id,
                                                user_name, msg_time,
                                                member_msg, fanpai_msg)
                    elif text_message_type == TextMessageType.LIVEPUSH:  # 直播
                        logger.debug('直播')
                        live_title = extInfo['liveTitle']
                        live_id = extInfo['liveId']
                        playStreamPath, playDetail = self.get_live_detail(
                            live_id)
                        self.save_msg_to_db(102, msg_id, user_id, user_name,
                                            msg_time, live_title)

                        live_message = '你们的崽崽开直播了\n直播标题: {}\n开始时间: {}'.format(
                            live_title, msg_time)
                        # QQHandler.send_to_groups(task.member_room_msg_groups, live_message)
                    elif text_message_type == TextMessageType.VOTE:  # 投票
                        logger.debug('投票消息')
                        vote_content = extInfo['text']
                        message = '【发起投票】{}: {}\n'.format(
                            user_name, vote_content) + message
                        self.save_msg_to_db(104, msg_id, user_id, user_name,
                                            msg_time, vote_content)
                    elif text_message_type == TextMessageType.FLIPCARD:
                        logger.debug('付费翻牌功能')
                        content = extInfo['question']

                        question_id = extInfo['questionId']
                        answer_id = extInfo['answerId']
                        source = extInfo['sourceId']
                        answer = extInfo['answer']

                        fan_name = self.get_idol_flip_name(
                            answer_id, question_id)
                        if fan_name:
                            flip_message = (
                                '【问】%s: %s\n【答】%s: %s\n翻牌时间: %s\n' %
                                (fan_name, content, user_name, answer,
                                 msg_time))
                            self.save_msg_to_db(105, msg_id, user_id,
                                                user_name, msg_time, answer,
                                                content, fan_name)
                        else:
                            flip_message = (
                                '【问】%s\n【答】%s: %s\n翻牌时间: %s\n' %
                                (content, user_name, answer, msg_time))
                            self.save_msg_to_db(105, msg_id, user_id,
                                                user_name, msg_time, answer,
                                                content)
                        message = flip_message + message

                    elif text_message_type == TextMessageType.PASSWORD_REDPACKAGE:
                        print('红包消息')
                        content = '【红包】{}'.format(extInfo['redPackageTitle'])
                        self.save_msg_to_db(106, msg_id, user_id, user_name,
                                            msg_time, content)
                elif msg['msgType'] == MessageType.IMAGE:  # 图片消息
                    logger.debug('图片')
                    bodys = json.loads(msg['bodys'])
                    if 'url' in bodys.keys():
                        url = bodys['url']
                        if global_config.USING_COOLQ_PRO is True:
                            message = ('【图片】[%s]-%s: [CQ:image,file=%s]\n' %
                                       (msg_time, user_name, url)) + message
                        else:
                            message = ('【图片】[%s]-%s: %s\n' %
                                       (msg_time, user_name, url)) + message
                        self.save_msg_to_db(200, msg_id, user_id, user_name,
                                            msg_time, url)
                elif msg['msgType'] == MessageType.AUDIO:  # 语音消息
                    logger.debug('语音消息')
                    bodys = json.loads(msg['bodys'])
                    if 'url' in bodys.keys():
                        url = bodys['url']
                        if global_config.USING_COOLQ_PRO is True:
                            message3 = ('【语音】[%s]-%s: %s\n' %
                                        (msg_time, user_name, url))
                            logger.info(message3)
                            # 语音消息直接单条发送
                            message2 = '[CQ:record,file={}]\n'.format(url)
                            # QQHandler.send_to_groups(task.member_room_msg_groups, message2)
                        else:
                            message = ('【语音】[%s]-%s: %s\n' %
                                       (msg_time, user_name, url)) + message
                        self.save_msg_to_db(201, msg_id, user_id, user_name,
                                            msg_time, url)
                elif msg['msgType'] == MessageType.VIDEO:  # 小视频
                    logger.debug('房间小视频')
                    bodys = json.loads(msg['bodys'])
                    if 'url' in bodys.keys():
                        url = bodys['url']
                        message = ('【小视频】[%s]-%s: %s\n' %
                                   (msg_time, user_name, url)) + message
                        self.save_msg_to_db(202, msg_id, user_id, user_name,
                                            msg_time, url)
                elif msg['msgType'] == MessageType.EXPRESS:  # 大表情
                    logger.debug('大表情')
                    emotion_name = extInfo['emotionName']
                    if global_config.USING_COOLQ_PRO is True:
                        if 'tsj' in emotion_name:
                            express_message = '[%s]-%s: [CQ:image,file=%s]' % (
                                msg_time, user_name,
                                '{}.gif'.format(emotion_name))
                        else:
                            express_message = '[%s]-%s: [CQ:image,file=%s]' % (
                                msg_time, user_name,
                                '{}.png'.format(emotion_name))
                        message = express_message + message
                    self.save_msg_to_db(203, msg_id, user_id, user_name,
                                        msg_time, emotion_name)
            if message and len(task.member_room_msg_groups) > 0:
                # express_message = '[CQ:image,file=%s]' % (
                #      'express\\tsj000.gif')
                # express_message2 = '[CQ:image,file=%s]' % (
                #      'express\\lt001.png')
                # QQHandler.send_to_groups(task.member_room_msg_groups, message)
                self.get_member_room_msg_lite(task)
                logger.info('message: %s', message)
                # QQHandler.send_to_groups(task.member_room_msg_groups, express_message)
                # QQHandler.send_to_groups(task.member_room_msg_groups, express_message2)
            logger.debug('成员{}消息队列: {}'.format(task.member.name,
                                               len(task.member_room_msg_ids)))
        except Exception as e:
            logger.exception(e)
        finally:
            self.conn.commit()
            cursor.close()
Exemplo n.º 17
0
    def parse_order_details(self, orders, taoba_entity):
        my_logger.debug('taoba_entity: {}'.format(taoba_entity.taoba_id))
        my_logger.debug('keys: {}'.format(self.order_queues.keys()))
        if len(self.order_queues[taoba_entity.taoba_id]) == 0 and len(
                orders) == 0:
            my_logger.debug('订单队列为空')
            return
        jiebang_activities = global_config.MODIAN_JIEBANG_ACTIVITIES[
            taoba_entity.taoba_id]
        flag_activities = global_config.MODIAN_FLAG_ACTIVITIES[
            taoba_entity.taoba_id]
        count_flag_activities = global_config.MODIAN_COUNT_FLAG_ACTIVITIES[
            taoba_entity.taoba_id]

        # 查询集资情况
        pro_name, current, backer_count = self.get_current_and_target(
            taoba_entity)
        project_info = '当前进度: %s元' % current

        taoba_entity.current = current
        taoba_entity.title = pro_name
        # group_account_entity.target = target
        taoba_entity.support_num = backer_count
        my_logger.debug('size of order %s queue: %s', taoba_entity.taoba_id,
                        len(self.order_queues[taoba_entity.taoba_id]))

        for order in orders:
            user_id = order['userid']
            nickname = order['nickname']
            pay_time = util.convert_timestamp_to_timestr(order['addtime'] *
                                                         1000)

            single_price = order['amount']
            pay_amount = order['nums']

            backer_money = single_price
            listid = int(order['id'])

            my_logger.debug('oid: %s', listid)

            if listid in self.order_queues[taoba_entity.taoba_id]:
                continue
            my_logger.debug('项目%s队列长度: %s', taoba_entity.taoba_id,
                            len(self.order_queues[taoba_entity.taoba_id]))

            # 每次需要更新一下昵称
            try:
                mysql_util.query(
                    """
                                        INSERT INTO `supporter` (`id`, `name`) VALUES (%s, %s)  ON DUPLICATE KEY
                                            UPDATE `id`=%s
                                        """, (user_id, nickname, user_id))
            except Exception as e:
                my_logger.exception(e)

            try:
                # 创建对象
                mysql_util.query(
                    """
                                    INSERT INTO `order` (`id`,`supporter_id`,`backer_money`,`pay_time`, `pro_id`) 
                                    VALUES (%s, %s, %s, %s, %s) ON DUPLICATE KEY
                                            UPDATE `id`=%s
                                """,
                    (str(listid), user_id, backer_money, pay_time,
                     taoba_entity.taoba_id, str(listid)))
            except Exception as e:
                my_logger.exception(e)

            msg = '感谢 %s(%s) 支持了%s元, %s\n' % (
                nickname, user_id, backer_money,
                util.random_str(global_config.MODIAN_POSTSCRIPTS))
            # daka_rank, support_days = self.find_user_daka_rank(user_id, group_account_entity.pro_id)

            # if daka_rank != -1 and support_days:
            #     msg += '当前项目已打卡%s天\n' % support_days

            # if group_account_entity.need_display_rank is True:
            #     jizi_rank, backer_money = self.find_user_jizi_rank(user_id, group_account_entity.pro_id)
            #     if jizi_rank != -1:
            #         msg += '当前项目已集资%s元, 排名: %s' % (backer_money, jizi_rank)
            # else:
            #     pass

            # 统计当前人数
            count = mysql_util.select_one(
                """
                SELECT COUNT(distinct(`supporter_id`)) FROM `order` WHERE `pro_id`=%s
            """, (taoba_entity.taoba_id, ))
            backer_count = count[0]
            msg += '当前集资人数: %s\n' % backer_count

            # 抽卡播报
            card_report = ''
            if global_config.MODIAN_CARD_DRAW:
                card_report = self.card_draw_handler.draw(
                    user_id, nickname, backer_money, pay_time)
            '''接棒相关'''
            my_logger.debug('接棒情况更新')
            for jiebang in jiebang_activities:
                # if jiebang.start_time > time.time():
                #     continue
                my_logger.debug('接棒活动详情: 【%s】', jiebang.name)
                my_logger.debug('集资金额: %s, 接棒最小金额: %s', backer_money,
                                jiebang.min_stick_amount)
                if backer_money >= jiebang.min_stick_amount:

                    stick_num = util.compute_stick_num(
                        jiebang.min_stick_amount, backer_money)
                    jiebang.current_stick_num += stick_num

                    jiebang.last_record_time = util.convert_timestamp_to_timestr(
                        int(time.time() * 1000))
                    # 数据库也要更新
                    try:
                        mysql_util.query(
                            """
                            UPDATE jiebang SET `current_stick_num`=%s, `last_record_time`=%s WHERE `name`=%s
                        """, (jiebang.current_stick_num,
                              jiebang.last_record_time, jiebang.name))
                    except Exception as e:
                        my_logger.error('更新接棒数据失败')
                        my_logger.exception(e)
                    my_logger.debug('数据库接棒数据更新完成')
                    test_msg = ''
                    if jiebang.need_detail == 1:
                        test_msg = '【%s】, 当前第%s棒, 目标%s棒\n' \
                                   % (jiebang.name, jiebang.current_stick_num, jiebang.target_stick_num)
                    elif jiebang.need_detail == 0:
                        test_msg = '【%s】\n' % jiebang.name
                    elif jiebang.need_detail == 2:
                        test_msg = '【%s】, 当前第%s棒\n' \
                                   % (jiebang.name, jiebang.current_stick_num)
                    elif jiebang.need_detail == 3:
                        if stick_num > 1:
                            test_msg = '抽奖号: {}~{}\n'.format(
                                jiebang.current_stick_num - stick_num + 1,
                                jiebang.current_stick_num)
                        else:
                            test_msg = '抽奖号: {}\n'.format(
                                jiebang.current_stick_num)
                    my_logger.debug(test_msg)
                    if len(test_msg) > 0:
                        msg += test_msg
                        # QQHandler.send_to_groups(['483548995'], test_msg)
            '''金额类flag相关'''
            my_logger.debug('flag情况更新')
            flag_test_msgs = ''
            for flag in flag_activities:
                my_logger.debug('Flag活动详情: %s', flag.name)
                my_logger.debug('Flag金额: %s, 结束时间: %s',
                                flag.target_flag_amount, flag.end_time)
                diff = flag.target_flag_amount - current
                test_msgs = '【%s】, 目标金额: %s元, ' % (flag.name,
                                                   flag.target_flag_amount)
                if diff > 0:
                    test_msgs += '距离目标还差%s元\n' % round(diff, 2)
                    flag_test_msgs += test_msgs
                else:
                    test_msgs += '已经达成目标\n'
            my_logger.debug(flag_test_msgs)
            if len(flag_test_msgs) > 0:
                pass
                # QQHandler.send_to_groups(['483548995'], flag_test_msgs)
                # msg += flag_test_msgs
            '''人头类flag相关'''
            my_logger.debug('人头flag情况更新')
            count_flag_test_msgs = ''
            for flag in count_flag_activities:
                my_logger.debug('人头Flag活动详情: %s', flag.name)
                my_logger.debug('人头Flag目标: %s, 开始时间: %s, 结束时间: %s',
                                flag.target_flag_amount, flag.start_time,
                                flag.end_time)
                target = flag.target_flag_amount

                # 统计当前人数
                rst = mysql_util.select_one(
                    """
                    select count(distinct(`supporter_id`)) from `order` 
                    where `pro_id` = %s and `pay_time` <= %s and `pay_time` >= %s
                """, (taoba_entity.taoba_id, flag.end_time, flag.start_time))

                # 目标人数为0,代表特殊类flag,只报人数
                if target == 0:
                    count_flag_test_msgs += '【%s】, 当前人数: %s ' % (flag.name,
                                                                 rst[0])
                else:
                    count_flag_test_msgs += '【%s】, 当前人数: %s, 目标人数: %s ' % (
                        flag.name, rst[0], flag.target_flag_amount)

            my_logger.debug(count_flag_test_msgs)
            if len(count_flag_test_msgs) > 0:
                # QQHandler.send_to_groups(['483548995'], count_flag_test_msgs)
                pass
                # msg += flag_test_msgs

            msg += '%s\n集资项目: %s\n集资方式: %s\n' % (project_info, pro_name,
                                                 taoba_entity.link)
            # msg += jizi_pk_report

            # if global_config.MODIAN_NEED_DISPLAY_PK:
            #     msg += self.pk_modian_activity()

            if global_config.USING_COOLQ_PRO is True:
                my_logger.debug('使用酷Q PRO发送图片')
                msg += '\n[CQ:image,file={}]\n'.format(taoba_entity.qrcode)

            # QQHandler.send_to_groups(taoba_entity.broadcast_groups, msg)
            if card_report:
                pass
                # QQHandler.send_to_groups(taoba_entity.broadcast_groups, card_report)
                # QQHandler.send_to_groups(['483548995'], card_report)

            # 集五福
            # wufu_report = modian_wufu_handler.draw(user_id, nickname, backer_money, pay_time)
            # if wufu_report:
            #     QQHandler.send_to_groups(group_account_entity.broadcast_groups, wufu_report)

            self.order_queues[taoba_entity.taoba_id].add(listid)

        # 更新接棒的数据库
        try:
            my_logger.debug('更新接棒活动信息:')
            for jiebang in jiebang_activities:
                my_logger.debug(
                    'current_stick_num: %s, last_record_time: %s, name: %s',
                    jiebang.current_stick_num, jiebang.last_record_time,
                    jiebang.name)
                mysql_util.query(
                    """
                    UPDATE jiebang SET current_stick_num=%s WHERE name=%s
                """, (jiebang.current_stick_num, jiebang.name))

        except Exception as e:
            my_logger.exception(e)