Beispiel #1
0
def _get_speak_tops(botid, target, date_from, date_to):
    '''
        获取发言排行榜
    :param botid: 机器人ID
    :param target: 目标
    :param date_from: 开始日期
    :param date_to: 结束日期
    :return: 统计数据 
    '''
    from plugins.speak import Speak
    from common.util import target_prefix2name, get_CQ_display

    records = Speak.get_top(botid, target_prefix2name(target.split('#')[0]),
                            target.split('#')[1], date_from, date_to)
    top_data = [{
        'name': get_CQ_display(r.sender_name),
        'id': r.sender_id,
        'count': r.cnt
    } for r in records]

    return {
        'success': 1,
        'data': {
            'botid':
            botid,
            'target':
            target,
            'statistics_data': [{
                'name': get_CQ_display(r.sender_name),
                'id': r.sender_id,
                'count': r.cnt
            } for r in records]
        }
    }
Beispiel #2
0
def _get_sign_today_count(botid, target, date_from, date_to):
    from plugins.sign import Sign
    from common.util import target_prefix2name

    sign_today = Sign.get_count(
        target.botid, target_prefix2name(target.target.split('#')[0]),
        target.target.split('#')[1], date_from, date_to)
    return sign_today.cnt if sign_today.cnt is not None else 0
Beispiel #3
0
def _get_point_today_total(botid, target, date_from, date_to):
    from plugins.point import Point
    from common.util import target_prefix2name

    point_today = Point.get_total(
        target.botid, target_prefix2name(target.target.split('#')[0]),
        target.target.split('#')[1], date_from, date_to)
    return point_today.total_success if point_today.total_success is not None else 0
Beispiel #4
0
def _get_score_today_total(botid, target, date_from, date_to):
    from plugins.score import ScoreRecord
    from common.util import target_prefix2name

    score_today = ScoreRecord.get_flow(
        target.botid, target_prefix2name(target.target.split('#')[0]),
        target.target.split('#')[1], date_from, date_to)
    return score_today.total if score_today.total is not None else 0
Beispiel #5
0
def _get_speak_today_count(botid, target, date_from, date_to):
    from plugins.speak import Speak
    from common.util import target_prefix2name

    speak_today = Speak.get_count(
        target.botid, target_prefix2name(target.target.split('#')[0]),
        target.target.split('#')[1], date_from, date_to)
    return speak_today.cnt_full if speak_today.cnt_full is not None else 0
Beispiel #6
0
def _do_speak_statistics(botid, target, date_from, date_to):
    '''
        重新计算发言统计
    :param botid: 机器人ID
    :param target: 目标
    :param date_from: 开始日期
    :param date_to: 结束日期
    :return: 是否成功
    '''
    from plugins.speak import SpeakCount
    from common.util import target_prefix2name

    if SpeakCount.do(botid, target_prefix2name(target.split('#')[0]),
                     target.split('#')[1], date_from, date_to):
        return {'success': 1}
    else:
        return {'success': 0}
Beispiel #7
0
def _get_speak_statistics(botid, target, date_from, date_to):
    '''
        获取发言统计数据
    :param botid: 机器人ID
    :param target: 目标
    :param date_from: 开始日期
    :param date_to: 结束日期
    :return: 统计数据
    '''
    import math
    from common.util import target_prefix2name
    from plugins.speak import SpeakCount

    max_count = 0
    min_count = 0
    statistics_data = SpeakCount.statistics(
        botid, target_prefix2name(target.split('#')[0]),
        target.split('#')[1], date_from, date_to).fetchall()

    for r in statistics_data:
        max_count = max(max_count, int(r.message_count))
        min_count = min(min_count if min_count != 0 else max_count,
                        int(r.vaild_count))

    return {
        'success': 1,
        'data': {
            'botid':
            botid,
            'target':
            target,
            'max_speaks':
            math.ceil(max_count / 100) * 100,
            'min_speaks':
            math.floor(min_count / 100) * 100,
            'statistics_data': [{
                'date': r.date,
                'message_count': r.message_count,
                'vaild_count': r.vaild_count
            } for r in statistics_data]
        }
    }