def battlelist(user_id=False, reDict=False): # 攻击列表 msg = "请先招募" userAll = setting.openjson('chess/user') # 打开本地user缓存到 userAll if not len(userAll): return msg userAll = levelProtect(userAll) # 计算战斗力 setting.writejson(userAll, 'chess/user') if user_id: # 判断用户在不在 user = list(filter(lambda item: item['user_id'] == user_id, userAll)) if not len(user): return msg # 判断退游 user = user[0] if user["uninstall"]: return "你已卸载退游" power = user["power"] users = userAll[:4] userAll = list(filter(lambda x: power - x["power"] < 300, userAll)) # 至少允许攻击后三位 if len(userAll) < 4: userAll = users if reDict: return userAll msg = '' for item in userAll: msg += '%s[%s] %d\n' % (item["nickname"][0], item["nickname"][-1], item["power"]) return msg
def intDraw(QQnum): DrawType = setting.openjson('ini')["DrawType"] msg = "" if not DrawType: msg = "抽卡系统未开启" return msg # 判断用户是否绑定 QQnum = str(QQnum) if QQnum in binds: user_id = binds[QQnum] userAll = setting.openjson("user/user") userCard = list( filter(lambda item: item["user_id"] == user_id, userAll)) if len(userCard): userCard = userCard[0] # 计算抽奖次数 DrawNum = int(userCard["integral"] / 100) # 积分够不够 if DrawNum: userCard["integral"] -= DrawNum * 100 arr = card(DrawNum, userCard) # userCard 用户抽卡信息 # msg 返回的文案 userCard = arr[0] msg = arr[1] setting.writejson(userAll, 'user/user') else: msg = '积分不足' else: msg = '发生错误,请检查绑定的user_id' else: msg = "未查到" + str(QQnum) + "信息" return msg
def treatment(user_id, nickname): # 治疗 msg = "请先招募" userAll = setting.openjson('chess/user') # 打开本地user缓存到 userAll # 玩家在不在 user = list(filter(lambda item: item['user_id'] == user_id, userAll)) if len(user): user = user[0] if user["uninstall"]: return "你已卸载退游" userAllIdol = user["idol"] + user["otherIdol"] # 角色在不在 has = list( filter(lambda item: item['nickname'] == nickname, userAllIdol)) if not len(has): return "你没有%s" % nickname # 角色是不是残血 hasIdol = has[0] if hasIdol["life"] >= hasIdol["alllife"] or hasIdol["life"] <= 0: return "你的%s已死亡或不需要治疗" % nickname # 判断道具在不在或者够不够 hasProp = list( filter(lambda item: item['name'] == "治疗药水", user["package"])) if not len(hasProp): return "你没有治疗药水" hasProp[0]["num"] -= 1 if hasProp[0]["num"] <= 0: user["package"].remove(hasProp[0]) # 开始复活 hasIdol["life"] = hasIdol["alllife"] msg = "你的【%s】已恢复生命值" % nickname setting.writejson(userAll, 'chess/user') return msg
def addDraw(QQnum, num): DrawType = setting.openjson('ini')["DrawType"] msg = "" if not DrawType: msg = "抽卡系统未开启" return msg # 判断用户是否绑定了 if QQnum in binds: user_id = binds[QQnum] cardAll = setting.openjson('user/user') # 打开本地userCard缓存到 cardAll # 过滤出含有 QQnum 的用户 user = list(filter(lambda item: item["user_id"] == user_id, cardAll)) if len(user): try: user = user[0] user["integral"] += int(num) setting.writejson(cardAll, 'user/user') msg = "补偿成功" except: msg = "积分错误" else: msg = '发生错误,请检查绑定的user_id' else: msg = "未查到" + str(QQnum) + "信息" return msg
def reset(): # 重置 userAll = setting.openjson('chess/user') # 打开本地user缓存到 userAll for item in userAll: item["gold"] = 6 for idol in item['idol']: idol['battle'] = 1 setting.writejson(userAll, 'chess/user') return "已经重置"
def addAtc(): userAll = setting.openjson('chess/user') # 打开本地user缓存到 userAll for item in userAll: for idol in item['idol']: idol['battle'] = 1 for idol in item['otherIdol']: idol['battle'] = 1 setting.writejson(userAll,'chess/user')
def changeBattle(user_id, idolList): # 替换角色 msg = "请先招募" userAll = setting.openjson('chess/user') # 打开本地user缓存到 userAll # 判断用户在不在 user = list(filter(lambda item: item['user_id'] == user_id, userAll)) if len(user): user = user[0] if user["uninstall"]: return "你已卸载退游" # 判断角色是否拥有 idolList = list(set(idolList.split(" "))) if len(idolList) != 2: return "角色不可重复且数量必须为2" userAllIdol = user["idol"] + user["otherIdol"] for idol in idolList: has = list( filter(lambda item: item['nickname'] == idol, userAllIdol)) if not len(has): return "你没有%s" % idol # 判断血量 for i in has: if i["life"] <= 0: return "你的%s已经阵亡,重选" % idol # 判断第一个在不在 hasGo = list( filter(lambda item: item['nickname'] == idolList[0], user["idol"])) if len(hasGo): hasGo = hasGo[0] hasT = list( filter(lambda item: item['nickname'] == idolList[1], user["otherIdol"]))[0] else: hasGo = list( filter(lambda item: item['nickname'] == idolList[1], user["idol"]))[0] hasT = list( filter(lambda item: item['nickname'] == idolList[0], user["otherIdol"]))[0] user["otherIdol"].remove(hasT) user["otherIdol"].append(hasGo) user["idol"].remove(hasGo) user["idol"].append(hasT) user["idol"] = sorted(user["idol"], key=lambda x: x['attack'], reverse=True) user["otherIdol"] = sorted(user["otherIdol"], key=lambda x: x['attack'], reverse=True) msg = "%s的当前阵容:" % user["nickname"][0] for item in user["idol"]: msg += "\n【%s】%s %s %s %s [CQ:emoji,id=9876]️%s [CQ:emoji,id=128737]️%s [CQ:emoji,id=9829]%s/%s" % ( item["battle"], setting.levelN( item["star"]), item["level"], item["nickname"], "*" + item["skill"] + "*" if item["skill"] != "未知" else '', item["attack"], item["defense"], item["life"], item["alllife"]) setting.writejson(userAll, 'chess/user') return msg
def nchange(user_id, m="N"): # 融化 if m == "N": n = 10 elif m == "R": n = 5 elif m == "SR": n = 2 else: return '' msg = "\n请先招募" userAll = setting.openjson('chess/user') # 打开本地user缓存到 userAll # 判断用户在不在 user = list(filter(lambda item: item['user_id'] == user_id, userAll)) if len(user): user = user[0] if user["uninstall"]: return "\n你已卸载退游" nCard = list( filter(lambda x: x["level"] == m and not x["lock"], user["otherIdol"])) user["otherIdol"] = list( filter(lambda x: x["level"] != m or x["lock"], user["otherIdol"])) nCard = sorted(nCard, key=lambda x: x['num'], reverse=True) # 开始计算 alln = sum([(i["num"]) for i in nCard]) if alln < n: return "\n不足%d个%s不可融合" % (n, m) num = int(alln / n) ind = alln % n user["gold"] += num # 获取剩余的 surplus = [] if ind: i = 0 while ind: if nCard[i]["num"] >= ind: nCard[i]["num"] = ind surplus.append(nCard[i]) ind = 0 else: surplus.append(nCard[i]) ind -= nCard[i]["num"] i += 1 user["otherIdol"] += surplus # print([i["nickname"] for i in user["otherIdol"]]) # print(ind) # return setting.writejson(userAll, 'chess/user') msg = "\n获得%s点招募值" % str(num) return msg
def lvUp(user_id, nickname): # 小星星 msg = "请先招募" userAll = setting.openjson('chess/user') # 打开本地user缓存到 userAll # 玩家在不在 user = list(filter(lambda item: item['user_id'] == user_id, userAll)) if len(user): user = user[0] if user["uninstall"]: return "你已卸载退游" userAllIdol = user["idol"] + user["otherIdol"] # 角色在不在 has = list( filter(lambda item: item['nickname'] == nickname, userAllIdol)) if not len(has): return "你没有%s" % nickname # 判断道具在不在或者够不够 hasProp = list( filter(lambda item: item['name'] == "小星星", user["package"])) if not len(hasProp): return "你没有小星星" hasIdol = has[0] # 根据等级扣除小星星,最多四个 need = {"N": 1, "R": 2, "SR": 3, "SSR": 4, "UR": 4} needStar = need[hasIdol["level"]] if hasProp[0]["num"] < needStar: return "小星星数量不够" hasProp[0]["num"] -= needStar if hasProp[0]["num"] <= 0: user["package"].remove(hasProp[0]) # 开始升级 hasIdol["star"] += 1 [attack, defense, life] = setting.dataUp(hasIdol["level"]) hasIdol["attack"] += attack hasIdol["life"] += life hasIdol["alllife"] += life hasIdol["defense"] += defense if hasIdol["level"] in ["R", "N"]: hasIdol["lock"] = True msg = "【%s】升星!\n星级:%s \n[CQ:emoji,id=9876]️%s ↑ %s\n[CQ:emoji,id=128737]️%s ↑ %s\n[CQ:emoji,id=9829]%s ↑ %s" % ( hasIdol["nickname"], setting.levelN( hasIdol["star"]), hasIdol["attack"], attack, hasIdol["defense"], defense, hasIdol["life"], life) if hasIdol["level"] in [ "N", "R", "SR" ] and hasIdol["star"] >= 4 and hasIdol["skill"] == "未知": # 获得技能 skill = setting.openjson("chess/skill") hasIdol["skill"] = random.choice(skill)["name"] msg += '\n获得技能:%s' % hasIdol["skill"] setting.writejson(userAll, 'chess/user') return msg
def addAdmin(QQnum): msg = '' try: Admin_id = int(QQnum) data = setting.openjson('ini') if Admin_id in data['admin']: msg = '该管理员已经存在' else: data['admin'].append(int(Admin_id)) setting.writejson(data, 'ini') msg = '追加成功' except Exception: msg = '发生错误,请检查输入格式是否正确' return msg
def delAdmin(QQnum): msg = '' try: Admin_id = int(QQnum) data = setting.openjson('ini') if Admin_id in data['admin']: data['admin'].remove(int(Admin_id)) setting.writejson(data, 'ini') msg = '删除成功' else: msg = '该管理员不存在' except Exception: msg = '发生错误,请检查输入格式是否正确' return msg
def alllockOn(user_id): # 上锁 msg = "请先招募" userAll = setting.openjson('chess/user') # 打开本地user缓存到 userAll # 判断用户在不在 user = list(filter(lambda item: item['user_id'] == user_id, userAll)) if len(user): if user[0]["uninstall"]: return "你已卸载退游" for item in user[0]["idol"]: item["lock"] = False for item in user[0]["otherIdol"]: item["lock"] = False msg = "已全部解锁" setting.writejson(userAll, "chess/user") return msg
def addPk(cont): msg = "添加pk项目成功" pkList = cont[5:].split(" ") # 将pidlist合并成可执行变量 hasList = ",".join(pkList) pkData = getDetail(hasList) if pkData["status"] == "2": msg = pkData['message'] else: data = setting.openjson("ini") data["pk"]["list"] = [] for item in pkList: data["pk"]["list"].append(item.split(",")) setting.writejson(data, "ini") return msg
def reset(): userAll = setting.openjson('chess/user') # 打开本地user缓存到 userAll for user in userAll: user["revenge"] = [] for item in user['idol']: if item["life"] < item['alllife']: item["life"] = item['alllife'] for item in user['otherIdol']: if item["life"] < item['alllife']: item["life"] = item['alllife'] addUser = 6 - len(user['idol']) if addUser: user['idol'] = user['idol']+user['otherIdol'][:addUser] user['otherIdol'] = user['otherIdol'][addUser:] setting.writejson(userAll,'chess/user')
def changeDraw(types): msg = "" iniData = setting.openjson("ini") if types: if iniData["DrawType"]: msg = "不可重复开启" else: iniData["DrawType"] = True msg = "开启成功" else: if iniData["DrawType"]: iniData["DrawType"] = False msg = "关闭成功" else: msg = "不可重复关闭" setting.writejson(iniData, "ini") return msg
def DrawCard(user_id, nick_name, backer_money): msg = '' # 不管金额多少都要入库,首先判断是否入库 userAll = setting.openjson('user/user') # 打开本地user缓存到 userAll user = list(filter(lambda item: item['user_id'] == int(user_id), userAll)) # 过滤出含有 user_id的对象数组 # 计算抽卡次数 DrawNum = int(backer_money / oneCard) # 查看一下抽卡系统的状态 DrawType = setting.openjson('ini')["DrawType"] if len(user): # 判断是否存在对象 长度为0则不存在 # 用户存在 user = user[0] # 打开用户抽卡文件并过滤出当前用户 user = list( filter(lambda item: item['user_id'] == int(user_id), userAll))[0] # 修改用户基本信息 user['nick_name'] = nick_name user['all_money'] = round(backer_money + user['all_money'], 2) user['nick_name'] = nick_name if DrawNum and DrawType: # 开始抽卡 arr = card(DrawNum, user) # arr = [user,msg] # userCard 用户抽卡信息 # msg 返回的文案 user = arr[0] msg = arr[1] else: # 用户不存在 # 新建用户 DrawNum 为可抽卡次数 dataList = addUser(user_id, nick_name, backer_money, DrawNum, DrawType) # dataList = [user,userCard,msg] # user 用户基本信息 # userCard 用户抽卡信息 # msg 返回的文案 user = dataList[0] msg += dataList[1] # 新用户添加到缓存的数据里去 userAll.append(user) # 按集资总额排序 userAll = sorted(userAll, key=lambda item: item["all_money"], reverse=True) setting.writejson(userAll, 'user/user') return msg
def todayShow(cont): msg = '' todayType = setting.openjson('ini') if cont == '开启每日播报': if todayType['todayType']: msg = '不可重复开启' else: todayType['todayType'] = True setting.writejson(todayType, 'ini') msg = '开启成功' else: if todayType['todayType']: todayType['todayType'] = False setting.writejson(todayType, 'ini') msg = '关闭成功' else: msg = '不可重复关闭' return msg
def changePK(cont): msg = "" data = setting.openjson("ini") if data["pk"]["status"]: if cont == "开启pk": msg = "开启状态不可重复开启" elif cont == "关闭pk": data["pk"]["status"] = False data["pk"]["list"] = [] data["modian"]["pk"] = '' msg = "已关闭并清除pk项目列表" else: if cont == "开启pk": data["pk"]["status"] = True msg = "开启成功,通过【pkid Pro_id】设置pkid\n通过【pk项目 Pro_id,Pro_id Pro_id,Pro_id Pro_id,Pro_id ...】设置pk列表" elif cont == "关闭pk": msg = "关闭状态不可关闭" setting.writejson(data, "ini") return msg
def lockOn(user_id, nickname, m): # 上锁 msg = "请先招募" userAll = setting.openjson('chess/user') # 打开本地user缓存到 userAll # 判断用户在不在 user = list(filter(lambda item: item['user_id'] == user_id, userAll)) if len(user): if user[0]["uninstall"]: return "你已卸载退游" userAllIdol = user[0]["idol"] + user[0]["otherIdol"] nCard = list(filter(lambda x: x["nickname"] == nickname, userAllIdol)) if not len(nCard): return "你没有【%s】" % nickname nCard = nCard[0] nCard["lock"] = True msg = "【%s】已上锁" % nickname if m: nCard["lock"] = False msg = "【%s】已解锁" % nickname setting.writejson(userAll, "chess/user") return msg
def suoha(user_id): # 梭哈 userAll = setting.openjson('chess/user') # 打开本地user缓存到 userAll # 过滤出含有 user_id的对象数组 user = list(filter(lambda item: item['user_id'] == int(user_id), userAll)) if not len(user): return "请先招募一次" user = user[0] if user["uninstall"]: return "你已卸载退游" msg = "梭哈信息如下:" if not user['gold']: return "招募次数不足" while user['gold']: user['gold'] -= 1 msgArr = card(user) user = msgArr["user"] msg += '\n%s' % msgArr["msg"] # 新用户添加到缓存的数据里去 userAll = levelProtect(userAll) # 计算战斗力 setting.writejson(userAll, 'chess/user') return msg
def DrawCard(user_id, nickname): # 最终调用的招募函数 # 不管金额多少都要入库,首先判断是否入库 userAll = setting.openjson('chess/user') # 打开本地user缓存到 userAll # 过滤出含有 user_id的对象数组 user = list(filter(lambda item: item['user_id'] == int(user_id), userAll)) if len(user): # 判断是否存在对象 长度为0则不存在 # 用户存在 user = user[0] if user["uninstall"]: return "你已卸载退游" msg = "次数已耗尽,等待恢复。" if "nickname" not in user: user["nickname"] = [nickname] if user["gold"]: msgArr = card(user) msg = msgArr['msg'] user = msgArr['user'] user["gold"] -= 1 else: # 用户不存在 data = setting.openjson('chess/idol/ssr') # 打开本地user缓存到 userAll idol = random.choice( list(filter(lambda item: item['level'] == "SSR", data))) user = { "user_id": user_id, "nickname": [nickname], "gold": 5, "uninstall": False, "power": 0, "package": [], "revenge": [], "idol": [idol], "otherIdol": [] } userAll.append(user) msg = "恭喜你招募到了【SSR】的新角色【%s】!\n初次招募必得SSR,后续招募看脸。" % idol["nickname"] userAll = levelProtect(userAll) # 计算战斗力 # 新用户添加到缓存的数据里去 setting.writejson(userAll, 'chess/user') return msg
def studySkill(user_id, cont): # 学技能 msg = "请先招募" userAll = setting.openjson('chess/user') # 打开本地user缓存到 userAll # 玩家在不在 user = list(filter(lambda item: item['user_id'] == user_id, userAll)) if len(user): [skill, nickname] = cont.split(" ") user = user[0] if user["uninstall"]: return "你已卸载退游" userAllIdol = user["idol"] + user["otherIdol"] # 角色在不在 has = list( filter(lambda item: item['nickname'] == nickname, userAllIdol)) if not len(has): return "你没有%s" % nickname # 判断道具在不在或者够不够 hasProp = list( filter(lambda item: item['name'] == "技能书", user["package"])) if not len(hasProp): return "你没有技能书" # 技能在不在 hasSkill = list( filter(lambda item: item['name'] == skill, setting.openjson('chess/skill'))) if not len(hasSkill): return "【%s】不存在" % skill elif not hasSkill[0]["study"]: return "【%s】不可学习" % skill hasIdol = has[0] hasProp[0]["num"] -= 1 if hasProp[0]["num"] <= 0: user["package"].remove(hasProp[0]) # 开始复活 hasIdol["skill"] = skill msg = "你的【%s】已学会【%s】" % (nickname, skill) setting.writejson(userAll, 'chess/user') return msg
def levelProtect(userAll): # 排名 for item in userAll: allIdol = item["idol"] + item["otherIdol"] allIdol = sorted(list(filter(lambda x: x["life"] > 0, allIdol)), key=lambda x: x['attack'], reverse=True) if len(allIdol) < 6: item["power"] = 0 else: item["power"] = int( sum([ allIdol[i]["attack"] / 0.15 + allIdol[i]["defense"] / 0.15 + allIdol[i]["alllife"] * 0.7 for i in range(6) ])) userAll = sorted(userAll, key=lambda i: i["power"], reverse=True) for i in range(len(userAll)): userAll[i]['KO'] = i + 1 ini = setting.openjson('ini') ini['allUser'] = userAll[-1]['KO'] setting.writejson(ini, 'ini') return userAll
def attack(user_id, typs=False): # 攻击阵容 typs 防御阵容 msg = "请先招募" userAll = setting.openjson('chess/user') # 打开本地user缓存到 userAll # 判断用户在不在 user = list(filter(lambda item: item['user_id'] == user_id, userAll)) if len(user): user = user[0] if user["uninstall"]: return "你已卸载退游" userAllIdol = user["idol"] + user["otherIdol"] if typs: # 防御姿态 userAllIdols = sorted(list( filter(lambda x: x["life"] > 0, userAllIdol)), key=lambda x: x['defense'], reverse=True) else: # 攻击姿态 userAllIdols = sorted(list( filter(lambda x: x["life"] > 0, userAllIdol)), key=lambda x: x['attack'], reverse=True) if len(userAllIdols) < 6: # 存活角色不足6个时候的操作 user["idol"] = userAllIdols user["otherIdol"] = list( filter(lambda x: x["life"] <= 0, userAllIdol)) else: # 将0血角色滞后 userAllIdol = userAllIdols + list( filter(lambda x: x["life"] <= 0, userAllIdol)) user["idol"] = userAllIdol[:6] user["otherIdol"] = userAllIdol[6:] msg = "当前阵容(%d):" % len(user["idol"]) for item in user["idol"]: msg += "\n【%s】%s %s %s %s [CQ:emoji,id=9876]️%s [CQ:emoji,id=128737]️%s [CQ:emoji,id=9829]%s/%s" % ( item["battle"], setting.levelN( item["star"]), item["level"], item["nickname"], "*" + item["skill"] + "*" if item["skill"] != "未知" else '', item["attack"], item["defense"], item["life"], item["alllife"]) setting.writejson(userAll, 'chess/user') return msg
def goSkill(user_id, name): # 按技能出战 msg = "请先招募" userAll = setting.openjson('chess/user') # 打开本地user缓存到 userAll # 判断用户在不在 user = list(filter(lambda item: item['user_id'] == user_id, userAll)) if len(user): user = user[0] if user["uninstall"]: return "你已卸载退游" userAllIdol = user["idol"] + user["otherIdol"] # 活着的角色 userAllIdols = list(filter(lambda x: x["life"] > 0, userAllIdol)) # 活着的角色里有技能的 hasName = sorted(list( filter(lambda x: x["skill"] == name, userAllIdols)), key=lambda i: i['attack'], reverse=True) # 活着的角色里么有技能的 noName = sorted(list(filter(lambda x: x["skill"] != name, userAllIdols)), key=lambda i: i['attack'], reverse=True) userAllIdolDead = list(filter(lambda x: x["life"] <= 0, userAllIdol)) # 拼接全部角色 userAllIdol = hasName + noName + userAllIdolDead user["idol"] = userAllIdol[:6] user["otherIdol"] = userAllIdol[6:] msg = "当前阵容(%d):" % len(user["idol"]) for item in user["idol"]: msg += "\n【%s】%s %s %s %s [CQ:emoji,id=9876]️%s [CQ:emoji,id=128737]️%s [CQ:emoji,id=9829]%s/%s" % ( item["battle"], setting.levelN( item["star"]), item["level"], item["nickname"], "*" + item["skill"] + "*" if item["skill"] != "未知" else '', item["attack"], item["defense"], item["life"], item["alllife"]) setting.writejson(userAll, 'chess/user') return msg
def changeProid(cont, pk=False): msg = '' try: # 获取新的proid pro_id = int(cont[5:]) # 获取项目信息 orderDict = modian.getDetail(pro_id) # 判断proid是否是有误 if int(orderDict['status']) == 2: msg = 'pro_id有误,请核实后重试' else: # 获取本地库配置 ini = setting.openjson('ini') # 在这里判断是换了日常还是pk if pk: ini['modian']['pk'] = pro_id else: # 配置好新的proid ini['modian']['pro_id'] = [pro_id] # 获取摩点order数据 orderData = modian.sorted_orders(pro_id, 1) # 判断当前项目是否存在数据 if int(orderData['status']) == 2: # 不存在数据 data = [] # 保存本地order文件 setting.writejson(data, "order/" + str(pro_id)) else: page = 1 data = [] while True: orderData = modian.sorted_orders(pro_id, page) # print(orderData["data"]) if orderData["data"] == None: break page += 1 data += orderData["data"] # for item in data: # card.DrawCard(item["user_id"],item["nickname"],item["backer_money"]) # 保存本地order文件 setting.writejson(data, "order/" + str(pro_id)) # resetRank(pro_id) # 保存配置文件 setting.writejson(ini, 'ini') # 设置返回文案 # 在这里判断是换了日常还是pk if pk: msg = '更换成功,当前pk项目为: ' + orderDict['data'][0]['pro_name'] else: msg = '更换成功,当前项目为: ' + orderDict['data'][0]['pro_name'] except Exception: msg = '发生错误,请检查输入格式是否正确' return msg
def addGold(): userAll = setting.openjson('chess/user') # 打开本地user缓存到 userAll for item in userAll: item["gold"] = item["gold"]+1 if item["gold"]<6 else item["gold"] setting.writejson(userAll,'chess/user')
def newOrder(stamp10, secondsDelay): msgDict_array = [] pro_id_array = md_init(setting.pro_id(0)) for pro_id_dict in pro_id_array: newOrders = [] # 获取一次订单信息,返回一个dictionary orderDict = sorted_orders(pro_id_dict['pro_id'], 1) # 查询失败则返回错误信息 if int(orderDict['status']) == 2: WARN("modian newOrder error", "获取订单错误", orderDict['message']) print(orderDict['message']) return msgDict_array # 20180319,防止空订单,循环查询五次 retry = 0 while not len(orderDict['data']): INFO("modian newOrder info", "疑似空订单") orderDict = sorted_orders(pro_id_dict['pro_id'], 1) retry += 1 if retry > 5: INFO("modian newOrder info", "订单5次为空,判断为无人集资") break # 不具备本地order.josn的写法 查询成功,遍历摩点库 # for data in orderDict['data']: # pay_success_time = data['pay_success_time'] # # 将字符串时间转换为unix时间戳 # data['pay_success_time'] = int(time.mktime(time.strptime(pay_success_time, '%Y-%m-%d %H:%M:%S'))) # # 筛选订单时间在查询时间前的设定时间段之间的订单 # if data['pay_success_time'] >= stamp10 - secondsDelay and data['pay_success_time'] < stamp10: # newOrders.append(data) # ------ 20180723具备本地order.json的写法 ------ # 获得本地库 data = setting.openjson("order/" + str(pro_id_dict['pro_id'])) # 判断本地库是都为空 if data == []: newOrders = orderDict["data"] else: # 获得摩点库 alldata = orderDict["data"] # 对摩点库进行排序 alldata = setting.sortOrder(alldata) # 与本地库对比 if alldata[0]["pay_success_time"] == data[0]["pay_success_time"]: pass else: print("发现遗漏订单" + str(pro_id_dict['pro_id'])) # 获取本地库第一个订单的时间转换为时间戳 oneTime = int( time.mktime( time.strptime(data[0]["pay_success_time"], '%Y-%m-%d %H:%M:%S'))) # 循环摩点接口所有订单 for i in range(len(alldata)): # 将摩点订单时间转换为时间戳 iTime = int( time.mktime( time.strptime(alldata[i]["pay_success_time"], '%Y-%m-%d %H:%M:%S'))) # 在摩点库中找到本地最新的那一个订单 if iTime == oneTime: for j in range(i): newOrders.append(alldata[j]) data = newOrders + data setting.writejson(data, "order/" + str(pro_id_dict['pro_id'])) # 有新订单 msgDict = [] if newOrders: # 获取项目信息 detail = getDetail(pro_id_dict['pro_id']) # 查询失败则返回错误信息 if int(detail['status']) == 2: WARN("modian newOrder error", "获取项目信息错误", detail['message']) # return detail['message'] # 查询成功,初始化消息 msg = '' for newOrder in newOrders: msg = "ID:" + newOrder['nickname'] + "\n" +\ "金额:¥ " + str(newOrder['backer_money']) + '\n' +\ "项目:" + pro_id_dict['name'] + "\n" +\ "链接:" + pro_id_dict['url_short'] + "\n" +\ "感谢"+newOrder['nickname']+"对" + setting.idol_name() + "的支持呦~" + \ tool.relay(newOrder['backer_money']) +\ card.DrawCard(newOrder["user_id"],newOrder["nickname"],newOrder["backer_money"]) if str(pro_id_dict['pro_id']) == str( setting.openjson('ini')['modian']['pk']) or ( setting.openjson('ini')['pk']['status'] and not (setting.openjson('ini')['modian']['pk'])): msg += tool.showPk("\n\npk实况:") msgDict.append(msg) msgDict_array.append(msgDict) return msgDict_array
def battle(user_id, nickname, types=False, re=True): # 进攻 types为True时全军出击 msg = "请先招募" userAll = setting.openjson('chess/user') # 打开本地user缓存到 userAll # 判断用户在不在 user = list(filter(lambda item: item['user_id'] == user_id, userAll)) if len(user): user = user[0] if user["uninstall"]: return False if nickname in user["nickname"]: return False # 过滤出对手 otherUser = list( filter(lambda item: nickname in item['nickname'], userAll)) if not len(otherUser): return False # 判断对手是否弱小 # 1.获取进攻列表 2.看看对手在不在列表 otherUser = otherUser[0] # otherUsers = battlelist(user_id,True) # if otherUser not in otherUsers: # return "禁止欺负弱小!" # 过滤出一个可进攻角色 # 进攻 if re: atc = list(filter(lambda item: item['battle'], user['idol'])) else: atc = copy.deepcopy(user['idol']) if not len(atc): return "没有可攻击的角色" # 这里开始是战斗片段 msg = "【%s】对战【%s】:\n" % (user["nickname"][0], nickname) num = 1 if types: num = len(atc) while num: # 如果是进攻的话 if re: # 开始计数 revenge = list( filter(lambda item: item['user_id'] == user_id, otherUser["revenge"])) if len(revenge): if revenge[0]["num"] >= 6: msg = "仇恨值已满,不可进攻" break else: revenge[0]["num"] += 1 else: otherUser["revenge"].append({ "user_id": user_id, "nickname": user["nickname"], "num": 1, "revenge": 0 }) else: # 开始计数 revenge = list( filter(lambda item: nickname in item["nickname"], user["revenge"])) if len(revenge): if revenge[0]["revenge"] >= revenge[0]["num"]: msg += "\n已完成复仇" break else: revenge[0]["revenge"] += 1 else: return "没有仇怨" [msgs, atc, user, otherUser] = sBattle(atc, user, otherUser) msg += msgs num -= 1 userAll = levelProtect(userAll) # 计算战斗力 setting.writejson(userAll, "chess/user") return msg
def bind(QQnum, user_id): binds[QQnum] = int(user_id) setting.writejson(binds, 'user/bind') msg = "绑定成功" return msg