Beispiel #1
0
 def update_member_coin(self, member: Member, amount: int) -> bool:
     newValue = member.coin + amount
     if (newValue < 0):
         return False
     member.coin = newValue
     member.save()
     return True
Beispiel #2
0
 def test_after_remove_ignore_increaseExp(self):
     self.database.remove_ignore_xp_channel(3, 5)
     self.database.set_ignore_xp_channel(3, 5)
     self.database.remove_ignore_xp_channel(3, 5)
     self.database.increase_exp(3, 5, default_user_id, 10)
     member = Member.get_by_id(default_user_id)
     assert member.exp == 10
Beispiel #3
0
 def get_leader_board(self, max_limit: int):
     query = Member.select().order_by(Member.exp.desc()).limit(max_limit)
     result = []
     if query.exists():
         for member in query.iterator():
             result.append(member)
     return result
Beispiel #4
0
 def increase_coin(self, guild_id: int, member_id: int, coin: int):
     query = Member.select().where(Member.member_id == member_id)
     if not query.exists():
         return
     member: Member = query.get()
     member.coin += coin
     member.save()
 def add_coin(member_id: int, amount: int):
     query = Member.select().where(Member.member_id == member_id)
     if query.exists():
         member = query.get()
     else:
         member = MemberUtil.add_member(member_id)
     member.coin += amount
     member.save()
Beispiel #6
0
 def set_exp(self, member_id: int, new_exp: int):
     query = Member.select().where(Member.member_id == member_id)
     if not query.exists():
         return -1
     member = query.get()
     member.exp = new_exp
     member.rank = 1
     member.save()
     return self.__update_rank_if_qualified(member_id)
Beispiel #7
0
 def __update_rank_if_qualified(self, member_id: int):
     member = Member.get_by_id(member_id)
     new_rank = member.rank
     while (member.exp > Util.get_rank_exp(new_rank + 1)):
         new_rank += 1
     if new_rank != member.rank:
         member.rank = new_rank
         member.save()
     return member.rank
 async def reset_everyone_rank(self, ctx: commands.Context, rank=0):
     member_id_list = Member.select(
         Member.member_id).where(Member.rank >= rank)
     for member_id in member_id_list:
         member: Member = self.db.get_member(member_id)
         try:
             user = await ctx.guild.fetch_member(member_id)
         except NotFound as e:
             continue
         await self.__updateUserRole(ctx.guild, user, member, member.rank,
                                     None, True)
Beispiel #9
0
 def increase_exp(self, guild_id: int, channel_id: int, member_id: int,
                  new_exp: int):
     if channel_id in self.__ignoreXpChannel.get(guild_id, []):
         return
     query = Member.select().where(Member.member_id == member_id)
     if not query.exists():
         return -1
     member = query.get()
     member.exp = member.exp + new_exp
     member.save()
     return self.__update_rank_if_qualified(member_id)
Beispiel #10
0
def login():
    resp = {'code': 200, 'msg': "操作成功", "data": {}}
    req = request.values

    code = req['code']
    app.logger.info(len(code))
    app.logger.info(code)
    if code == None or len(code) < 10:
        resp['code'] = -1
        resp['msg'] = "需要code"
        app.logger.info("need code")
        return jsonify(resp)
    openid = MemberService.getWeChatOpenId(code)
    if openid == None:
        resp['code'] = -1
        resp['msg'] = "微信调用登录接口失败"
        app.logger.info("微信调用登录接口失败")
        return jsonify(resp)
    resp["openid"] = openid
    nickname = req['nickName']
    sex = req['gender']
    avatar = req['avatarUrl']

    bind_info = OauthMemberBind.query.filter_by(openid=openid, type=1).first()
    app.logger.debug("bind_info")
    app.logger.debug(bind_info)
    if not bind_info:
        model_member = Member()
        model_member.nickname = nickname
        model_member.sex = sex
        model_member.avatar = avatar
        model_member.salt = MemberService.genSalt()
        model_member.created_time = model_member.updated_time = getCurrentDate(
        )
        db.session.add(model_member)
        db.session.commit()

        model_bind = OauthMemberBind()
        model_bind.member_id = model_member.id
        model_bind.type = 1
        model_bind.extra = ''
        model_bind.openid = openid
        model_bind.updated_time = model_bind.created_time = getCurrentDate()
        db.session.add(model_bind)
        db.session.commit()

        db.session.flush()

        bind_info = model_bind

    member_info = Member.query.filter_by(id=bind_info.member_id).first()
    token = "%s#%s" % (MemberService.geneAuthCode(member_info), member_info.id)
    resp['data'] = {'token': token}
    return jsonify(resp)
Beispiel #11
0
def login():
    resp = {'code': 200, 'msg': '操作成功~', 'data': {}}
    req = request.values
    # app.logger.info( req )
    code = req['code'] if 'code' in req else ''
    if not code or len(code) < 1:
        resp['code'] = -1
        resp['msg'] = "需要code"
        return jsonify(resp)

    openid = MemberService.getWeChatOpenId(code)
    if openid is None:
        resp['code'] = -1
        resp['msg'] = "调用微信出错"
        return jsonify(resp)

    nickname = req['nickname'] if 'nickname' in req else ''
    sex = req['gender'] if 'gender' in req else ''
    avatar = req['avatarUrl'] if 'avatarUrl' in req else ''
    # app.logger.info( req )

    bind_info = OauthMemberBind.query.filter_by(openid=openid, type=1).first()
    if not bind_info:
        model_member = Member()
        model_member.nickname = nickname
        model_member.sex = sex
        model_member.avatar = avatar
        model_member.salt = MemberService.geneSalt()
        model_member.updated_time = model_member.created_time = getCurrentDate(
        )
        db.session.add(model_member)
        db.session.commit()

        model_bind = OauthMemberBind()
        model_bind.member_id = model_member.id
        model_bind.type = 1
        model_bind.openid = openid
        model_bind.extra = ''
        model_bind.updated_time = model_bind.created_time = getCurrentDate()
        db.session.add(model_bind)
        db.session.commit()

        bind_info = model_bind

    member_info = Member.query.filter_by(id=bind_info.member_id).first()
    token = "%s#%s" % (MemberService.geneAuthCode(member_info), member_info.id)
    resp['data'] = {'token': token}

    return jsonify(resp)
Beispiel #12
0
def login():
    prompt = {'code': 200, "msg": "登陆成功", "data": {}}
    req = request.values
    code = req['code'] if 'code' in req else ''
    if not code or len(code) < 1:
        prompt['code'] = -1
        prompt['msg'] = "未接收到code!"
        return jsonify(prompt)

    url = "https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code" \
        .format(app.config['MINA']['appid'], app.config['MINA']['appkey'], code)
    r = requests.get(url)
    res = json.loads(r.text)
    openid = res['openid']

    nickname = req['nickName'] if 'nickName' in req else ''
    sex = req['gender'] if 'gender' in req else 0
    avatar = req['avatarUrl'] if 'avatarUrl' in req else ''

    member_info = Member.query.filter_by(openid=openid).first()
    if member_info:
        if member_info.status != 1:
            prompt['code'] = -1
            prompt['msg'] = "用户已失效!"
            return jsonify(prompt)
        token = "%s-%s" % (member_info.id, member_info.status)
        prompt['data'] = {"token": token}
        return jsonify(prompt)

    model_member = Member()
    model_member.nickname = nickname
    model_member.sex = sex
    model_member.avatar = avatar
    model_member.openid = openid
    model_member.purview = 1
    db.session.add(model_member)
    db.session.commit()

    token = "%s-%s" % (member_info.id, member_info.status)
    prompt['data'] = {"token": token}
    return jsonify(prompt)
Beispiel #13
0
 def add_member(member_id:int):
     member = Member.create(member_id=member_id)
     member.save()
     return member
Beispiel #14
0
 def get_member_count():
     query = Member.select(fn.Count())
     if query.exists():
         return query.scalar()
     return 0
Beispiel #15
0
 def add_members(self, member_ids):
     data = []
     for member_id in member_ids:
         data.append({'member_id': member_id})
     Member.insert_many(data).execute()
Beispiel #16
0
 def reset_everyone_token(self):
     member_id_list = Member.select(Member.member_id)
     for member_id in member_id_list:
         Member.update(token=100).where(
             Member.member_id == member_id).execute()
Beispiel #17
0
 def test_addMultipleMembers(self):
     member_ids = [1, 2, 3, 4, 5, 6, 7, 8]
     self.database.add_members(member_ids)
     for member_id in member_ids:
         member = Member.get_by_id(member_id)
         assert member.member_id == member_id
Beispiel #18
0
 async def updateUserKfpRoles(self, message: Message, rank: int,
                              channelToUse: GuildChannel):
     member = Member.select().where(Member.member_id == message.author.id)
     user = message.author
     await self.__updateUserRole(message.guild, user, member, rank,
                                 channelToUse, False)
Beispiel #19
0
 def get_member(member_id:int):
     query = Member.select().where(Member.member_id == member_id)
     if query.exists():
         return query.get()
     return None
Beispiel #20
0
 def test_increaseExp(self):
     self.database.increase_exp(0, 0, default_user_id, 10)
     member = Member.get_by_id(default_user_id)
     assert member.exp == 10
Beispiel #21
0
 def test_rankUp(self):
     member = Member.get_by_id(default_user_id)
     assert member.rank == 0
     self.database.increase_exp(0, 0, default_user_id, 100)
     member = Member.get_by_id(default_user_id)
     assert member.rank == 1
Beispiel #22
0
 def add_coin(self, member_id: int, amount: int):
     query = Member.select().where(Member.member_id == member_id)
     if not query.exists():
         return False
     member = query.get()
     return self.update_member_coin(member, amount)
Beispiel #23
0
 def get_total_coin():
     query = Member.select(fn.SUM(Member.coin))
     if query.exists():
         return query.scalar()
     return 0
Beispiel #24
0
 def force_update_rank(self, member_id: int, new_rank: int):
     member = Member.get_by_id(member_id)
     member.rank = new_rank
     member.save()
     return member.rank
Beispiel #25
0
 def get_or_add_member(member_id:int):
     query = Member.select().where(Member.member_id == member_id)
     if query.exists():
         return query.get()
     return MemberUtil.add_member(member_id)
Beispiel #26
0
 def get_member_rank_order(self, member_id: int):
     target_exp = Member.get_by_id(member_id).exp
     return Member.select().where((Member.exp > target_exp)).count() + 1