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 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 seachMy(idType, Id): DrawType = setting.openjson('ini')["DrawType"] if not DrawType: msg = "抽卡系统未开启" return msg msg = "" user_id = 0 userAll = setting.openjson('user/user') # 打开本地user缓存到 userAll if idType: # 过滤出含有 nick_name的对象数组 user = list(filter(lambda item: item["nick_name"] == Id, userAll)) if not (len(user) == 1): msg = "未查到信息或昵称重名了" return msg else: user = user[0] user_id = user["user_id"] else: Id = str(Id) # 判断用户是否绑定了 if Id in binds: user_id = binds[Id] # 过滤出含有 QQnum 的用户 user = list( filter(lambda item: item["user_id"] == user_id, userAll)) if len(user): user = user[0] user_id = user["user_id"] else: msg = '发生错误,请检查绑定的user_id' return msg else: msg = "未查到" + str(Id) + "信息" return msg userCard = user['card_list'] cardmsg = "" # 部署已抽到的卡的文案 cardAllNum = setting.openjson('ini')['cardAllNum'] sysAllNum = 0 userAllNum = 0 for item in userCard: try: sysAllNum += cardAllNum[item] except: pass userAllNum += len(userCard[item]) if len(userCard[item]): cardmsg += '\n【' + item + "】" + str(len( userCard[item])) + '/' + str(cardAllNum[item]) + '\n| ' for name in userCard[item]: cardmsg += name + " | " msg = "ID:" + str(user["nick_name"]) + "\n" + \ "可用积分:" + str(user["integral"]) + "\n" + \ "收集进度: " + str(userAllNum) + "/" + str(sysAllNum) + "\n" + \ "抽卡信息:" + cardmsg 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 cardSamll(user, msgList, level): # 遍历路径下的所有文件 # 抽一张 # 获得cardName # 根绝level获取文件子路径 /r /sr /ssr 这种 childPath = setting.openjson('ini')["childPath"][level] file_dir = cardPath + idolPath + "/" + childPath # print(file_dir) # print(list(os.walk(file_dir))) files = list(os.walk(file_dir))[0][2] cardName = os.path.splitext(random.choices(files)[0])[0] # 判断重复 if cardName in user['card_list'][childPath]: # 转换积分 msgList[2] += 30 + 10 * level msgList[0] += 1 else: user["card_num"] += 1 user['card_list'][childPath].append(cardName) if childPath not in msgList[1]: msgList[1][childPath] = [] msgList[1][childPath].append(cardName) arr = [user, msgList] return arr
def idolhMy(user_id, level): # 我的角色 msg = "请先招募" userAll = setting.openjson('chess/user') # 打开本地user缓存到 userAll user = list(filter(lambda item: item['user_id'] == user_id, userAll)) if len(user): # 过滤出含有 nick_name的对象数组 user = user[0] if user["uninstall"]: return "你已卸载退游" userAllIdol = user["idol"] + user["otherIdol"] lvIdol = list(filter(lambda item: item['level'] == level, userAllIdol)) allN = len(setting.openjson("chess/idol/%s" % level)) msg = "你的%s(%d/%d):" % (level, len(lvIdol), allN) for idol in lvIdol: msg += "%s *%s、" % (idol["nickname"], idol["num"]) return msg
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 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 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 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 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 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 on_time(): todayType = openjson('ini')['todayType'] if todayType: msg = ["每日集资记录~\n\n"] msgAll = msg[0] + tool.today("定时播报") for grpid in groupid(): bot.send_group_msg_async(group_id=grpid, message=msgAll, auto_escape=False) time.sleep(0.5) else: print('每日播报未开启')
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 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 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 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 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 seachPack(user_id): # 道具列表 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 "你已卸载退游" if not len(user["package"]): return "你没有道具" msg = "你的道具:" for item in user["package"]: msg += "%s*%d、" % (item["name"], item["num"]) 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 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 revenge(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 "你已卸载退游" # 开始复仇 msg = '' revenges = list( filter(lambda x: x['revenge'] < x['num'], user[0]["revenge"])) if not len(revenges): return False for item in revenges: msg += "%s\n" % item["nickname"][0] return msg
def showSkill(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"] nCard = list(filter(lambda x: x["skill"] == name, userAllIdol)) if not len(nCard): return "你没有 *%s* 的角色" % name msg = "*%s*:" % name for item in nCard: msg += "%s、" % item["nickname"] return msg
def dead(user_id): # 已阵亡 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"] nCard = list(filter(lambda x: x["life"] <= 0, userAllIdol)) if not len(nCard): return "你没有战败角色" msg = "战败:" for item in nCard: msg += "%s、" % item["nickname"] return msg
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 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 getDui(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 "你已卸载退游" # 开始复仇 allDui = list( filter( lambda item: item['user_id'] != user_id and user_id not in [j['user_id'] for j in item['revenge']] and item['power'] > 0, userAll)) if not len(allDui): return "你无敌了" duishou = random.choice(allDui) msg = duishou['nickname'][1] if len( duishou['nickname']) > 1 else duishou['nickname'][0] return msg