Esempio n. 1
0
def draw_ten_card(user_id):
    """
    十连抽
    :param user_id:
    :return:
    """
    score = select_score(user_id)
    if score < CARD_PRICE * 9:
        return get_return('爬', code=1)
    add_score(user_id, -9 * CARD_PRICE)
    str1 = f'花费{CARD_PRICE * 9}积分。\n'
    n_NUM = 0
    lv_num = {'UR': 0, "SSR": 0, 'SR': 0, 'R': 0, 'N': 0}
    card_num = {'N': [], 'R': [], 'SR': [], "SSR": [], 'UR': []}
    imgs = {}
    for i in range(10):
        img, str2, lv = get_random_card()
        n_NUM += 1 if lv == 'N' else 0
        if n_NUM == 10:
            while lv == 'N':
                img, str2, lv = get_random_card()
                str1 += '触发保底:\n'
        lv_num[lv] += 1
        if imgs.get(img):
            imgs[img] += 1
        else:
            imgs[img] = 1
        card_num[lv].append(img)
        if str2:
            str1 += str2 + '\n'
    archive_cards(user_id, imgs, lv_num)
    return get_return(str1)
Esempio n. 2
0
def draw_hundred_card(user_id):
    """
    百连抽
    :param user_id:
    :return:
    """
    score = select_score(user_id)
    if score < CARD_PRICE * 80:
        return get_return('爬')
    lv_num = {'UR': 0, "SSR": 0, 'SR': 0, 'R': 0, 'N': 0}
    card_num = {'N': [], 'R': [], 'SR': [], "SSR": [], 'UR': []}
    imgs = {}
    for i in range(100):
        img, str1, lv = get_random_card()
        lv_num[lv] += 1
        if imgs.get(img):
            imgs[img] += 1
        else:
            imgs[img] = 1
        card_num[lv].append(img)
    archive_cards(user_id, imgs, lv_num)
    str1 = f'扣除{CARD_PRICE * 80}积分\n获得UR卡{lv_num["UR"]}张\n获得SSR卡{lv_num["SSR"]}张\n获得SR卡{lv_num["SR"]}张\n' \
        f'获得R卡{lv_num["R"]}张\n获得N卡{lv_num["N"]}张\n详细抽卡结果已私聊发送'
    str3 = ''  # str3 为私聊发送
    for i in card_num:
        if i == 'N':
            str3 += '获得N卡若干\n'
            continue
        if not card_num[i]:
            continue
        for _ in card_num[i]:
            str3 += f'获得{i}——{_}\n'
    return get_return(str1, str3)
Esempio n. 3
0
def new_user_boom(user_id, user_self_boom=0, group_id=''):
    """
    玩家开启数字炸弹,并且将boom设置为玩家定好的数字
    要是存在group_id,则随机设定boom
    同时设定boom_owner和boom_type
    :param user_id:
    :param user_self_boom:用户自定义boom
    :param group_id:
    :return:
    """
    global boom, boom_owner, boom_type
    user_self_boom = can_to_int(user_self_boom)
    if boom_type:
        return get_return('已经有游戏正在进行!')
    to_zero()
    if not 0 < user_self_boom < 100:
        return get_return('给爷爬!游戏范围都不知道了?')
    to_zero()
    boom = user_self_boom
    if group_id:
        boom = random.randint(1, 99)
    score = enough_score(user_id, USER_BOOM_PRICE)
    if not score:
        # 此处预留银行贷款功能,等银行写好后再补充
        return pa
    add_score(user_id, -USER_BOOM_PRICE)
    boom_owner = user_id
    boom_type = 2
    return get_return('创建成功')
Esempio n. 4
0
def daily_score(user_id):
    """
    签到,检查是否已签到,未签到则产生随机积分,并将积分赋给该用户,更改该用户的"score"积分字段以及"da"签到日期字段
    :param user_id:
    :return:
    """
    score, da = select_u(user_id, 'score', 'da')
    today = str(datetime.date.today())
    if da == today:
        return get_return('您已签到!', 1)
    a = random.randint(20, 50)
    score += a
    change_score(user_id, score, today)
    str1 = f'获得:{a}积分!总积分:{score}'
    # if a <= 24:
    #     str2 = '不会真有人觉得自己签个到就能欧皇吧?不会吧不会吧?\n非酋签个到也才'
    # elif a >= 41:
    #     str2 = '欧皇ohhh!!\n签到居然有'
    # else:
    #     str2 = '...\n获得:'
    # # if score >= 500:
    # #     a = int(a*0.1)
    # #     str1 = '\n积分超过五百,签到积分减少90%,'
    # # elif score >= 400:
    # #     a = int(a*0.6)
    # #     str1 = '\n积分超过四百,签到积分减少60%,'
    # # elif score >= 300:
    # #     a = int(a*0.5)
    # #     str1 = '\n积分超过三百,签到积分减少50%,'
    # # elif score >= 200:
    # #     a = int(a*0.6)
    # #     str1 = '\n积分超过二百,签到积分减少40%,'
    #
    # return get_return(str2 + f'')
    return get_return(str1)
Esempio n. 5
0
def is_wx_regis(openid):
    """
    查询是否已经绑定小程序
    :param openid:
    :return:
    """
    res = select_any_in_wx({'openid': openid}, 'id')
    if not res:
        return get_return('', need={'user_id': None}, code=0)
    return get_return('', need={'user_id': res[0]})
Esempio n. 6
0
def wx_regis(user_id, code, openid):
    if not code:
        return pa
    verify_code = select_wx(user_id, 'code')[0]
    if not verify_code:
        return pa
    if verify_code != code:
        update_wx(user_id, {'code': ''})
        return get_return('您输入的验证码不正确,请是重新获取', code=1)
    update_wx(user_id, {"openid": openid, 'code': ''})
    return get_return(f'绑定成功,您的QQ号为:{user_id}')
Esempio n. 7
0
def get_login_openid(data):
    url = 'https://api.weixin.qq.com/sns/jscode2session'
    params = data
    res = requests.get(url, params=params)
    if res.status_code != 200:
        return get_return('获取失败', code=1)
    data_json = res.json()
    if data_json.get('openid'):
        return get_return('获取成功', need=res.json())
    else:
        return get_return('获取失败', code=1)
Esempio n. 8
0
def is_not_continue(user_id):
    """
    验证游戏是否可以继续玩
    :param user_id:
    :return:
    """
    time_remain = cannot_play_secondary(user_id)
    if not boom:
        return get_return('没有游戏进行')
    if not enough_score(user_id, BOOM_PRICE):
        return get_return('积分不足!')
    if time_remain:
        return get_return(time_remain)
    return False
Esempio n. 9
0
def draw_card(user_id):
    """
    抽卡
    :param user_id:
    :return:
    """
    score = select_score(user_id)
    if score < CARD_PRICE:
        return get_return('爬', code=1)
    add_score(user_id, -CARD_PRICE)
    img, str1, lv = get_random_card()
    str1 = f'花费{CARD_PRICE}积分,获得{lv}卡:{img}。'
    archive_card(user_id, img, lv, 1)
    return get_return(str1, need={'card': img})
Esempio n. 10
0
def get_verify_code(user_id):
    verify_code = str(randint(1000, 9999))
    if not select_wx(user_id, 'Id'):
        insert_wx(user_id)
    update_wx(user_id, {'code': verify_code})
    private_msg = f'您的验证码为:{verify_code}, 注意,验证码仅一次有效,请慎重输入'
    return get_return('', private_msg=private_msg, private_id=user_id)
Esempio n. 11
0
def increase_score(user_id, score):
    """
    直接插入积分, 管理员专用
    :param user_id:
    :param score:
    :return:
    """
    add_score(user_id, score)
    return get_return('增加成功')
Esempio n. 12
0
def search_card(user_id):
    """
    查询用户拥有的卡牌
    :param user_id:
    :return:
    """
    res = select_u(user_id, 'N', 'R', 'SR', "SSR", 'UR')
    str1 = f'N:{res[0]}  R:{res[1]}  SR:{res[2]}  SSR:{res[3]}  UR:{res[4]}'
    return get_return(str1)
Esempio n. 13
0
def new_boom(user_id):
    """
    新建一个boom数,并将它设为全局变量
    但是,在boom不为0的时候,要拒绝这个请求
    同时每个玩家一天只能开启一次系统游戏,所以:
    在开启游戏前需要检测game的boom字段,若不为0,则代表当前玩家今日开启过数字炸弹,拒绝该请求
    开启游戏后将数据库game表中的"boom"字段设为1
    :return:
    """
    global boom, boom_type
    if not boom_type:
        if select_game_for_sql(user_id, 'boom'):
            return pa
        to_zero()
        boom = random.randint(1, 99)
        boom_type = 1
        update_game_for_sql(user_id, {'boom': 1})
        return get_return('游戏创建成功!')
    return get_return('已经有游戏正在进行!')
Esempio n. 14
0
def search_score(user_id):
    """
    查询用户积分
    :param user_id:
    :return:
    """
    score = select_score(user_id)
    if score:
        return get_return(f'积分:{score}', need={'score': score})
    return '穷鬼爬'
Esempio n. 15
0
def rumor(user_id, message):
    """
    制造谣言
    :param user_id:
    :param message: 谣言内容
    :return:
    """
    score = enough_score(user_id, RUMOR_PRICE)
    if not score:
        return get_return('爬', code=1)
Esempio n. 16
0
def select_achievement(user_id):
    """
    查询用户成就
    :param user_id:
    :return:
    """
    achievement = select_u(user_id, 'achievement')[0]
    achievement_num = len(achievement.split(' ')) - 1
    str1 = f'您的成就有:{achievement}, 共{achievement_num}个'
    return get_return(str1)
Esempio n. 17
0
def achievement_progress(user_id):
    """
    检查某用户获得的所有成就
    :param user_id:
    :return:
    """
    str1 = ''
    for _ in achieve_list:
        achieve_name, progress = one_achievement_progress(user_id, _)
        str1 += progress
    return get_return('', str1)
Esempio n. 18
0
def get_user_restaurant(user_id):
    """
    获取用户食府数据
    :param user_id:
    :return:
    """
    restaurant_id = get_restaurant_id(user_id)
    restaurant = get_restaurant(user_id)
    name = restaurant.get('name')
    food = restaurant.get('food')
    str1 = f'您当前食府为{restaurant_id}号食府{name},食物为:{"、".join(food.keys())}'
    return get_return(public_msg=str1, need={'restaurant': restaurant})
Esempio n. 19
0
def boom_play(user_id, boom_num):
    """
    判断boom_num与boom的大小,并提示接下来的游戏范围,当一个人猜对时,置零所有参数
    time_start:开始游戏时的时间戳
    :param user_id:
    :param boom_num:
    :return:
    """
    global boom, left, right, boom_type, boom_consume
    boom_num = can_to_int(boom_num)
    res = is_not_continue(user_id)
    if res:
        return res
    boom_consume += BOOM_PRICE
    add_score(user_id, -BOOM_PRICE)
    if not left < boom_num < right:
        player.append({"user_id": user_id, "time": time.time()})
        return get_return(f'猜错了,接下请从[{left}-{right}]选择')
    if boom_num < boom:
        left = boom_num
        str1 = get_return(f'猜错了,接下请从[{left}-{right}]选择')
    elif boom_num > boom:
        right = boom_num
        str1 = get_return(f'猜错了,接下请从[{left}-{right}]选择')
    else:
        reward_score = get_reward_score(left, right)
        add_score(user_id, reward_score)
        if boom_type == 2:
            owner_score = USER_BOOM_PRICE + boom_consume - reward_score - USER_BOOM_TAX
            str1 = get_return(
                public_msg=f'恭喜你答对了, 获得积分{BOOM_SCORE}',
                private_msg=f'您做庄的数游戏已结束,扣除4积分启动分,玩家获胜分{reward_score}\n'
                f'玩家总参与积分{boom_consume}\n返还给您{owner_score}积分。',
                private_id=boom_owner)
            add_score(boom_owner, owner_score)
        else:
            str1 = get_return(public_msg=f'恭喜你答对了, 获得积分{BOOM_SCORE}')
        to_zero()
    player.append({"user_id": user_id, "time": time.time()})
    return str1
Esempio n. 20
0
def next_restaurant(user_id):
    restaurants_data = get_restaurants_data(user_id)
    restaurant_id = get_restaurant_id(user_id)
    now = time.time()
    go = restaurants_data['go']
    if go:
        restaurants_data[restaurant_id]['food'][go] += NEXT_WEIGHT
    food_dic = restaurants_data[restaurant_id]['food']
    did = get_restaurants_did(user_id)
    if (len(did) > 2) and (did[-1]['food'] == did[-2]['food']) and (did[-1]['time'] - did[-2]['time'] < 86400) \
            and (now - did[-1]['time'] < 86400):
        ignore = restaurants_data['go']
    else:
        ignore = None
    food = get_random_food(food_dic, ignore)
    restaurants_data['go'] = food
    restaurants_data['active'] = now
    save_restaurants_data(user_id, restaurants_data)
    return get_return(public_msg=f'当前食物为:{food}', need={'food': food})
Esempio n. 21
0
def delete_wx_regis(user_id):
    update_wx(user_id, {'code': '', 'openid': ''})
    return get_return(f'删除成功:{user_id}')