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
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
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
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
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
def mplink(**kw): b = botHandler.botHandler() try: res = b.get_mp_link() except: logging.exception("") return "fail!" return res
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
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
def mpidlekill(**kw): b = botHandler.botHandler() try: res = b.mp_idle_kill() return "kill result:%s" % res except: logging.exception("") return "fail!"
def admchatcnt(**kw): try: b = botHandler.botHandler() return b.get_admins() except: logging.exception("") return "raise exception!"
def osump(**kw): b = botHandler.botHandler() try: res = b.osu_mp(kw["groupid"]) except: logging.exception("") return "未知异常,请联系inter处理!" return res
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
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
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
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
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()
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
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
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
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
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
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
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 ""
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 ""
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..."
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..."
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
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