def apiv2RefreshToken(refreshtoken, updatedb=1, **kw): """token刷新 """ url = 'https://osu.ppy.sh/oauth/token' header = {'Content-Type': 'application/x-www-form-urlencoded'} params = { 'grant_type': 'refresh_token', 'client_id': '19', 'client_secret': '46SmWQ2TyF5FMECwHrblTZ2oiYq4yyAbOH5BDDS7', 'refresh_token': refreshtoken, "redirect_uri": "http://interbot.cn/apiv2/auth" } ret = -1 res = requests.post(url, headers=header, data=params) logging.info('refreshtoken:%s|status:%s', url, res) if res.status_code == 200: rs = json.loads(res.text) if not rs.get('error'): ret = rs['access_token'] if updatedb: baseHandler.baseHandler().updateToken(kw['qq'], kw['groupid'], rs['access_token'], rs['refresh_token']) else: ret = -2 logging.info('token失效') return ret
def apiv2me(**kw): qqid = request.form.get('qqid') groupid = request.form.get('groupid') atqq = request.form.get('atqq') queryid = qqid if atqq: base = baseHandler.baseHandler() rs = base.checkTokenPermission(atqq, groupid) if rs.isdigit(): queryid = atqq else: return rs url = "http://inter4.com/osubot/v2me" data = {"qqid": queryid, "groupid": groupid} r = requests.post(url, timeout=10, data=data) try: rdata = json.loads(r.text) imgpath = ppyHandler.ppyHandler().drawRankLine(rdata, queryid) return "[CQ:image,cache=0,file=%s]" % imgpath except: logging.error(traceback.format_exc()) if len(r.text) < 50: return r.text else: return '异常' return '异常,懒得修了'
def getV2MyInfo(self, qq, groupid): uinfo = baseHandler.baseHandler().getUserBindInfo({"qq": qq}) token = uinfo[0]["acesstoken"] refreshtoken = uinfo[0]["refreshtoken"] osuname = uinfo[0]["osuname"] res = self.autov2Req(qq, groupid, "me", token, refreshtoken) if isinstance(res, str): return res else: return json.dumps(res)
def recommendTags(**kw): qq = kw['atqq'] if kw.get('atqq') else kw['qqid'] groupid = kw['groupid'] ins = baseHandler.baseHandler() r = ins.recordRecMap(qq, groupid) rs = '' if r == -1: rs = '推荐功能执行中!' elif r == 1: rs = '开启推荐map功能,发送图链,结束后请使用!stoprcm' return rs
def stat(**kw): b = ppyHandler.ppyHandler() atqq = kw['atqq'] if atqq: base = baseHandler.baseHandler() rs = base.checkTokenPermission(atqq, kw['groupid']) if rs.isdigit(): rs = b.osuV2stat(atqq, kw['groupid']) else: rs = b.osuV2stat(kw['qqid'], kw['groupid']) return rs
def bindUserInfo(**kw): ins = baseHandler.baseHandler() osuid = ' '.join(kw['iargs']) if kw.get('iargs') else kw.get('osuid', '') r = ins.bindOsuUser(osuid, kw['qqid'], kw['groupid']) if r > 0: rs = '绑定成功!' elif r == 0: rs = '重复绑定!' elif r == -1: rs = '系统异常!' elif r == -2: rs = '网络或者用户名异常!' else: rs = '未知错误!' return rs
def userPermissionSet(**kw): ins = baseHandler.baseHandler() pms = Config.TOKEN_PERMISSION levels = pms.keys() usage = 'usage: ¡settokenpms %s\n注:' % ('/'.join(levels)) for k in levels: usage += k + '-' + pms[k] + ' ' if not kw.get('iargs'): return usage inputLevel = kw['iargs'][0] if inputLevel not in levels: return usage ret = ins.updateUserPermission(kw['qqid'], inputLevel) rs = "token权限更新成功!\n当前权限: %s-%s" % (inputLevel, pms[inputLevel]) if ret <= 0: rs = "token权限更新失败!\n当前权限: %s-%s" % (inputLevel, pms[inputLevel]) return rs
def getFriends(self, qq, groupid): uinfo = baseHandler.baseHandler().getUserBindInfo({"qq": qq}) token = uinfo[0]["acesstoken"] refreshtoken = uinfo[0]["refreshtoken"] osuname = uinfo[0]["osuname"] res = self.autov2Req(qq, groupid, "friends", token, refreshtoken) if isinstance(res, str): return res else: friendsNum = len(res) rs = "%s's friends(%s)\n" % (osuname, friendsNum) if friendsNum < 10: fs = res else: fs = random.sample(res, 10) for i, r in enumerate(fs): rs += '%s.%s\n' % (i + 1, r["username"]) return rs[:-1]
def recommendList(**kw): qq = kw['atqq'] if kw.get('atqq') else kw['qqid'] groupid = kw['groupid'] ins = baseHandler.baseHandler() r = ins.recordRecMapList(qq, groupid) return str(r)
def remRecommendTags(**kw): qq = kw['atqq'] if kw.get('atqq') else kw['qqid'] groupid = kw['groupid'] ins = baseHandler.baseHandler() r = ins.stopRecordRecMap(qq, groupid) return str(r)
def userInfoApi2(**kw): ins = baseHandler.baseHandler() rts = ins.getUserBindInfo2(kw['qqid']) return json.dumps(rts)
def userInfoApi(**kw): ins = baseHandler.baseHandler() rts = ins.getUserBindInfo({"qq": kw['qqid']}) return json.dumps(rts)
def userPermission(**kw): ins = baseHandler.baseHandler() ret = ins.getUserPermission(kw['qqid']) return ret
def bindUserToken(**kw): ins = baseHandler.baseHandler() url = 'https://osu.ppy.sh/oauth/authorize?client_id=19&response_type=code&state=%sx%s&scope=friends.read%%20identify' % ( kw['qqid'], kw['groupid']) ret = url + '\n*请点击链接进行授权绑定' return ret
def chat(**kw): inputs = ' '.join(kw['iargs']) ins = baseHandler.baseHandler() r = ins.chat2bot(inputs) return r
def getV2osuInfo(self, qq, groupid): uinfo = baseHandler.baseHandler().getUserBindInfo({"qq": qq}) token = uinfo[0]["acesstoken"] refreshtoken = uinfo[0]["refreshtoken"] osuname = uinfo[0]["osuname"] return self.autov2Req2(qq, groupid, "me", token, refreshtoken)