Exemple #1
0
def bestmaprecdraw(**kw):
    if not kw['iargs']:
        return "请输入bid!"
    bid = kw['iargs'][0]
    osuid = kw['autoOusInfoKey']['osuid']
    osuname = kw['autoOusInfoKey']['osuname']
    b = botHandler.botHandler()
    # res = b.get_best_map_rec_from_db(osuid, bid)
    # if not res:
    #     return "你连成绩都没有,快去打一个上传!"
    # recinfo = json.loads(res["recjson"])
    try:
        res = b.getBestInfo(osuid, bid, "1")
        if not res:
            return "没有查询到该铺面游戏记录!"
        recinfo = res[0]
        recinfo["beatmap_id"] = bid
        p, kv = b.drawRctpp(osuid, osuname, recinfo=recinfo, bestinfo=recinfo)
        rank_tab.upload_best_rec(osuid, kw["groupid"], [recinfo])
        res = "[CQ:image,cache=0,file=http://interbot.cn/itbimage/tmp/%s]" % p
        # rank_tab.upload_best_rec(osuid, kw["groupid"], [recinfo])
        # 执行管理逻辑
        smoke_res = b.rctppSmoke(kw["groupid"], kw["qqid"], kv, iswarn=1)
        if smoke_res:
            return f'{osuname}\n由于触发本群限制,请私聊查询,触犯法律:{smoke_res}'
    except:
        logging.exception("")
        return "fail..."
    return res
Exemple #2
0
def bbp2(**kw):
    qqid = kw['qqid']
    x = 1  
    args0 = None
    if kw['iargs']:
        input0 = kw['iargs'][0]
        args0 = input0.replace(f'[CQ:at,qq={qqid}]', '')
        x = int(args0) if args0.isdigit() else 1
        if len(kw['iargs']) >= 2 and kw['iargs'][1].isdigit():
            x = int(kw['iargs'][1]) 

    if x < 1 or x > 100:
        x = 1

    b = botHandler.botHandler()
    # osuinfo = b.getOsuInfo2(qqid)
    # if osuinfo:
    #     osuid = osuinfo['osuid']
    #     osuname = osuinfo['osuname']
    # else:
    #     return "你倒是绑定啊.jpg"
    osuid = kw['autoOusInfoKey']['osuid']
    osuname = kw['autoOusInfoKey']['osuname']
    if args0 and not args0.isdigit():
        osuid = args0
        osuname = args0

    recinfo = b.getRecBp(osuid, "100")
    if not recinfo:
        return "没有Bp,下一个!!"
    # res = b.bbpOutFormat2(recinfo[x-1:x+2], osuname, x)
    fname = b.bbpOutFormatDraw2(recinfo[x-1:x+2], osuname, x)
    res = Config.ImgTmp % fname
    return res
Exemple #3
0
def mybp(**kw):
    x = "1" if not kw['iargs'] else kw['iargs'][0]
    if int(x) < 0 or int(x) > 100:
        x = "1"
    b = botHandler.botHandler()
    osuinfo = b.getOsuInfo2(kw['qqid'])
    logging.info(osuinfo)
    if osuinfo:
        osuid = osuinfo['osuid']

        key = 'OSU2_USERBP:%s'
        rds = interRedis.connect('osu2')
        rdsRs = rds.get(key % osuid)
        if not rdsRs:
            recinfo = b.getRecBp(osuid, "100")
            rds.setex(key % osuid, json.dumps(recinfo), 900)
        else:
            recinfo = json.loads(rdsRs)

        if not recinfo:
            res = "别复读好马!"
        else:
            res, kv = b.getRctppRes(recinfo[int(x) - 1])
            # 执行管理逻辑
            b.rctppSmoke(kw["groupid"], kw["qqid"], kv)
    else:
        res = "你倒是绑定啊.jpg"
    return res
Exemple #4
0
def bestmaprec(**kw):
    if not kw['iargs']:
        return "请输入bid!"
    bid = kw['iargs'][0]
    osuid = kw['autoOusInfoKey']['osuid']
    osuname = kw['autoOusInfoKey']['osuname']
    b = botHandler.botHandler()
    # res = b.get_best_map_rec_from_db(osuid, bid)
    # if not res:
    #     return "你连成绩都没有,快去打一个上传!"
    # recinfo = json.loads(res["recjson"])

    res = b.getBestInfo(osuid, bid, "1")
    if not res:
        return "没有查询到该铺面游戏记录!"
    recinfo = res[0]
    recinfo["beatmap_id"] = bid
    res, kv = b.getRctppResNew(recinfo)
    res = f"{osuname}\n{res}"
    rank_tab.upload_best_rec(osuid, kw["groupid"], [recinfo])
    # 执行管理逻辑
    smoke_res = b.rctppSmoke(kw["groupid"], kw["qqid"], kv, iswarn=1)
    if smoke_res:
        res += f'\n>>{smoke_res}<<'
    if smoke_res:
        return f'{osuname}\n由于触发本群限制,请私聊查询,触犯法律:{smoke_res}'
    return res
Exemple #5
0
def rctpps(**kw):
    b = botHandler.botHandler()
    osuid = kw['autoOusInfoKey']['osuid']
    osuname = kw['autoOusInfoKey']['osuname']

    qqid = kw['qqid'] if not kw['atqq'] else kw['atqq']
    if not kw['iargs']:
        x = 0  
    else:
        input0 = kw['iargs'][0]
        args0 = input0.replace(f'[CQ:at,qq={qqid}]', '')
        x = int(args0) if args0.isdigit() else 0

    if x < 0 or x > 100:
        x = 0
    
    recinfo = b.getRecInfo(osuid, str(x+3))
    if not recinfo:
        return "没有最近游戏记录\n绑定用户为%s" % osuname
    
    if x > len(recinfo):
        x = len(recinfo) - 3
    if x < 0:
        x = 0

    fname = b.getRctppBatchResDraw2(osuname, recinfo[x:x+3])
    res = Config.ImgTmp % fname
    return res
Exemple #6
0
def mplink(**kw):
    b = botHandler.botHandler()
    try:
        res = b.get_mp_link()
    except:
        logging.exception("")
        return "fail!"
    return res
Exemple #7
0
def days(**kw):
    x = 0 if not kw['iargs'] else int(kw['iargs'][0])
    if int(x) < 0:
        x = 0
    osuname = kw['autoOusInfoKey']['osuname']
    b = botHandler.botHandler()
    ret = b.osu_stats(osuname, x)
    return ret
Exemple #8
0
def ppcheckcallback(**kw):
    logging.info('ppcheckcallback....')
    ret = kw["ret"]
    users = json.loads(ret)
    groupid = kw["callbackargs"]
    b = botHandler.botHandler()
    ret = b.scanPlayers2(groupid, users)
    return ret
Exemple #9
0
def mpidlekill(**kw):
    b = botHandler.botHandler()
    try:
        res = b.mp_idle_kill()
        return "kill result:%s" % res
    except:
        logging.exception("")
        return "fail!"
Exemple #10
0
def admchatcnt(**kw):
    try:
        b = botHandler.botHandler()
        return b.get_admins()

    except:
        logging.exception("")
        return "raise exception!"
Exemple #11
0
def osump(**kw):
    b = botHandler.botHandler()
    try:
        res = b.osu_mp(kw["groupid"])
    except:
        logging.exception("")
        return "未知异常,请联系inter处理!"
    return res
Exemple #12
0
def myinfo(**kw):
    b = botHandler.botHandler()
    osuid = kw['autoOusInfoKey']['osuid']
    osuname = kw['autoOusInfoKey']['osuname']
    money = kw['autoOusInfoKey']['money']
    bagnum = kw['autoOusInfoKey']['bagnum']
    home_url = 'https://osu.ppy.sh/u/%s' % osuname
    res = "osu:%s\nosuid:%s\nmoney:%s\nbagnum:%s\n%s" % (osuname, osuid, money, bagnum, home_url)
    return res
Exemple #13
0
def test(**kw):
    b = botHandler.botHandler()
    osuid = kw['autoOusInfoKey']['osuid']
    uinfo = b.getOsuInfoFromAPI(osuid)
    if not uinfo:
        return "不存在或者网络异常!"
    recinfo = b.getRecBp(osuid, "5")
    res = b.testFormatOut(uinfo[0], recinfo)
    return res
Exemple #14
0
def createroom(**kw):
    b = botHandler.botHandler()
    osuname = kw['autoOusInfoKey']['osuname']
    if len(kw['iargs']) != 2:
        return '参数错误 usage: ¡createroom roomname password'
    roomname = kw['iargs'][0]
    roompwd = kw['iargs'][1]

    res = b.createMpRoom(osuname, kw['qqid'], kw['groupid'], roomname, roompwd)
    return res
Exemple #15
0
def bbp(**kw):
    b = botHandler.botHandler()
    osuid = kw['autoOusInfoKey']['osuid']
    osuname = kw['autoOusInfoKey'].get('osuname')

    recinfo = b.getRecBp(osuid, "5")
    if not recinfo:
        return "没有Bp,下一个!!"
    res = b.bbpOutFormat(recinfo, osuname)
    return res
Exemple #16
0
    def jobMethod(self):

        b = botHandler.botHandler()
        if not b.check_mp_idle():
            rs = b.make_mp_idle()
            logging.info("auto make mp idle rs:%s", rs)
        else:
            logging.info("mp idle alive")
            if not b.check_mp_network():
                b.mp_idle_kill()
Exemple #17
0
def nbp(**kw):
    b = botHandler.botHandler()
    osuid = kw['autoOusInfoKey']['osuid']
    osuname = kw['autoOusInfoKey'].get('osuname')
    bid = kw['iargs'][0]

    recinfo = b.getRecBp(osuid, "100")
    if not recinfo:
        return "没有Bp,下一个!!"
    res = b.getBpNumBybid(recinfo, osuname, bid)
    return res
Exemple #18
0
def rctpps(**kw):
    b = botHandler.botHandler()
    osuid = kw['autoOusInfoKey']['osuid']
    osuname = kw['autoOusInfoKey']['osuname']
    recinfo = b.getRecInfo(osuid, "5")
    logging.info(recinfo)
    if not recinfo:
        res = "没有最近游戏记录,绑定用户为%s" % osuname
    else:
        res = b.getRctppBatchRes(recinfo)
    return res
Exemple #19
0
def re(**kw):
    osuid = kw['autoOusInfoKey']['osuid']
    rank_tab.upload_rec(osuid, kw["groupid"])
    b = botHandler.botHandler()
    recinfo = b.getRecInfo(osuid, "1")
    if recinfo:
        res, kv  = b.getRctppRes(recinfo[0])
        smoke = b.rctppSmoke(kw["groupid"], kw["qqid"], kv, iswarn=0)
        if smoke:
            return smoke
    return ""
def once_insert():
    """自动抓取
    条件 -- 数据库是否存在今天的记录
    存在记录时 -- 做捡漏处理
    """
    ins = botHandler.botHandler()
    if not ins.is_insert_today():
        logging.info('今天未插入,开始执行插入...')
        ins.insert_forday()
    else:
        logging.info('今天插入已完成')
    def checkUser(self, osuid, osuname):
        """预测
        """
        try:
            botObj = botHandler.botHandler()
            apiUserInfo = botObj.getOsuInfoFromAPI(osuid)
            if not apiUserInfo:
                return 0, 0, 0
            pp = apiUserInfo[0]['pp_raw']
            bpinfo = botObj.getRecBp(osuid, limit=10)
            count_num = 0
            count_pp = 0
            maxpp = 0
            conn = interMysql.Connect('osu')
            for r in bpinfo:
                maxcombo1 = int(r['maxcombo']) - 10
                maxcombo2 = int(r['maxcombo']) + 10
                c50 = float(r['count50'])
                c100 = float(r['count100'])
                c300 = float(r['count300'])
                cmiss = float(r['countmiss'])
                acc = round((c50 * 50 + c100 * 100 + c300 * 300) /
                            (c50 + c100 + c300 + cmiss) / 300 * 100, 2)
                acc1 = acc - 0.2
                acc2 = acc + 0.2
                args = [
                    r['beatmap_id'], r['enabled_mods'], acc1, acc2, maxcombo1,
                    maxcombo2
                ]
                sql = '''
                    SELECT avg(u.pp_raw) a, count(1) b 
                    FROM osu_bp b INNER JOIN osu_user u on b.user_id=u.user_id 
                    WHERE b.beatmap_id = %s and b.mods=%s and b.acc BETWEEN %s and %s and b.maxcombo BETWEEN %s and %s 
                '''
                res = conn.query(sql, args)

                res = res[0]
                if res['a'] is None:
                    continue
                if res['a'] > maxpp:
                    maxpp = res['a']
                if res['b'] != 1:
                    count_num += 1
                    count_pp += res['a']
            if count_num == 0:
                yugu_pp = pp
            else:
                yugu_pp = round(count_pp / count_num)
            if maxpp == 0:
                maxpp = float(pp)
            return pp, yugu_pp, round(maxpp)
        except:
            logging.error(traceback.format_exc())
            return 0, 0, 0
Exemple #22
0
def bestmaprec(**kw):
    if not kw['iargs']:
        return "请输入bid!"
    bid = kw['iargs'][0]
    osuid = kw['autoOusInfoKey']['osuid']
    b = botHandler.botHandler()
    res = b.get_best_map_rec_from_db(osuid, bid)
    if not res:
        return "你连成绩都没有,快去打一个上传!"
    recinfo = json.loads(res["recjson"])
    res, kv = b.getRctppRes(recinfo)
    return res
Exemple #23
0
def setcontent(**kw):
    b = botHandler.botHandler()
    osuname = kw['autoOusInfoKey']['osuname']
    if kw['iargs']:
        content = kw['iargs'][0]
    else:
        return '请输入内容,¡xx xxxx'
    if content[:2] == '\r\n':
        content = content[2:]
    cmd = b.set_id_content_cmd(osuname, content)
    res = '设置成功,生成指令为[%s]' % cmd
    return res
Exemple #24
0
def rctppnew(**kw):
    b = botHandler.botHandler()
    osuid = kw['autoOusInfoKey']['osuid']
    osuname = kw['autoOusInfoKey']['osuname']
    recinfo = b.getRecInfo(osuid, "1")
    logging.info(recinfo)
    if not recinfo:
        res = "没有最近游戏记录,绑定用户为%s" % osuname
    else:
        res, kv = b.getRctppResNew(recinfo[0])
        # 执行管理逻辑
        b.rctppSmoke(kw["groupid"], kw["qqid"], kv)
    rank_tab.upload_rec(osuid, kw["groupid"])
    return res
Exemple #25
0
def score(**kw):
    if not kw['iargs']:
        return ""
    bid = kw['iargs'][0]
    osuid = kw['autoOusInfoKey']['osuid']
    b = botHandler.botHandler()

    res = b.getBestInfo(osuid, bid, "1")
    if not res:
        return ""
    recinfo = res[0]
    recinfo["beatmap_id"] = bid
    rank_tab.upload_best_rec(osuid, kw["groupid"], [recinfo])
    return ""
Exemple #26
0
def pr(**kw):
    osuid = kw['autoOusInfoKey']['osuid']
    rank_tab.upload_rec(osuid, kw["groupid"])
    b = botHandler.botHandler()
    recinfo = b.getRecInfo(osuid, "50")
    for r in recinfo:
        if r["rank"] == "F":
            continue
        res, kv  = b.getRctppRes(r)
        smoke = b.rctppSmoke(kw["groupid"], kw["qqid"], kv, iswarn=0)
        if smoke:
            return smoke
        break
    return ""
Exemple #27
0
def rctppdraw(**kw):
    b = botHandler.botHandler()
    osuid = kw['autoOusInfoKey']['osuid']
    osuname = kw['autoOusInfoKey']['osuname']
    try:
        p, kv = b.drawRctpp(osuid, osuname)
        # 执行管理逻辑
        smoke_res = b.rctppSmoke(kw["groupid"], kw["qqid"], kv, iswarn=1)
        if smoke_res:
            return f'{osuname}\n由于触发本群限制,请私聊查询,触犯法律:{smoke_res}'
        rank_tab.upload_rec(osuid, kw["groupid"])
        return "[CQ:image,cache=0,file=http://interbot.cn/itbimage/tmp/%s]" % p
    except:
        logging.exception("rctppdraw error")
        return "fail..."
Exemple #28
0
def rank(**kw):
    try:
        if not kw['iargs']:
            return "请输入bid!"
        bid = kw['iargs'][0]
        osuid = kw['autoOusInfoKey']['osuid']
        b = botHandler.botHandler()
        res = b.getBestInfo(osuid, bid, "1")
        if res:
            recinfo = res[0]
            recinfo["beatmap_id"] = bid
            rank_tab.upload_best_rec(osuid, kw["groupid"], [recinfo])
        p = drawRank.start(bid, kw["groupid"], hid=1, mods=-1, uid=osuid)
        return "[CQ:image,cache=0,file=http://interbot.cn/itbimage/%s]" % p
    except:
        logging.exception("rank error")
        return "fail..."
Exemple #29
0
def randmapdraw(**kw):
    s1, s2, s3 = 4, 5.6, 5
    if kw['iargs'] and len(kw['iargs']) >= 1:
        try:
            n = float(kw['iargs'][0])
            if n == n:
                s1 = n
                s2 = s1 + 0.1
        except:
            pass

    b = botHandler.botHandler()
    logging.info(f"randmapdraw args, s1:{s1}, s2:{s2}, s3:{s3}")
    fname = b.random_maps_draw(s1, s2, s3)
    if not fname:
        res = "暂无推荐,请换个难度重试!"
    else:
        res = Config.ImgTmp % fname
    return res
Exemple #30
0
def rctppnew(**kw):
    b = botHandler.botHandler()
    osuid = kw['autoOusInfoKey']['osuid']
    osuname = kw['autoOusInfoKey']['osuname']
    recinfo = b.getRecInfo(osuid, "1")
    logging.info(recinfo)
    smoke_res = None
    if not recinfo:
        res = "没有最近游戏记录\n绑定用户为%s" % osuname
    else:
        res, kv = b.getRctppResNew(recinfo[0])
        res = f"{osuname}\n{res}"
        # 执行管理逻辑
        smoke_res = b.rctppSmoke(kw["groupid"], kw["qqid"], kv, iswarn=1)
        if smoke_res:
            res += f'\n>>{smoke_res}<<'
    rank_tab.upload_rec(osuid, kw["groupid"])
    if smoke_res:
        return f'{osuname}\n由于触发本群限制,请私聊查询,触犯法律:{smoke_res}'
    return res