Skip to content

模块 nonebot_plugin_marshoai.plugins.twisuki_petcat.pc_cat


func cat_update(func)

源代码在GitHub上查看
python
def cat_update(func):

    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        if args:
            token = args[0]
            data = token_to_dict(token)
            if data['name'] == 'Default0':
                return '猫猫尚未初始化, 请初始化猫猫'
            if data['name'] == 'ERROR!':
                return f'token出错token应为Base64字符串, 当前token : "{token}"当前token长度应为20, 当前长度 : {len(token)}'
            if data['skill'] == [False] * 8:
                return f"很不幸, 猫猫已死亡名字 : {data['name']}年龄 : {data['age']}"
            date = data['date']
            now = (datetime(2025, 1, 1) - datetime.now()).days
            if now - date > 5:
                data['saturation'] = max(data['saturation'] - 64, 0)
                data['health'] = max(data['health'] - 32, 0)
                data['energy'] = max(data['energy'] - 32, 0)
            elif now - date > 2:
                data['saturation'] = max(data['saturation'] - 16, 0)
                data['health'] = max(data['health'] - 8, 0)
                data['energy'] = max(data['energy'] - 16, 0)
            if data['saturation'] / 1.27 < 20:
                data['health'] = max(data['health'] - 8, 0)
            elif data['saturation'] / 1.27 > 80:
                data['health'] = min(data['health'] + 8, 127)
            if now % 7 == 0:
                if data['health'] / 1.27 < 20:
                    data['health'] = 0
                    death = DEFAULT_DICT
                    death['name'] = data['name']
                    data = death
                if data['health'] / 1.27 > 60 and data['saturation'] / 1.27 > 40:
                    data['age'] = min(data['age'] + 1, 15)
            token = dict_to_token(data)
            new_args = (token,) + args[1:]
            return func(*new_args, **kwargs)
    return wrapper

func cat_new(type: str = '猫1') -> str

源代码在GitHub上查看
python
def cat_new(type: str='猫1') -> str:
    data = DEFAULT_DICT
    if type not in TYPE_LIST:
        return f'未知的"{type}"种类, 请重新选择.\n可选种类 : {pc_info.print_type_list()}'
    data['type'] = TYPE_LIST.index(type)
    token = dict_to_token(data)
    return f'猫猫已创建, 种类为 : "{type}"; \ntoken : "{token}",\n请妥善保存token, 这是猫猫的唯一标识符!\n新的猫猫还没有起名字, 请对猫猫进行初始化, 起一个长度小于等于8位的名字(仅限大小写字母+数字+特殊符号), 并选取一个技能.\n技能列表 : {pc_info.print_skill_list()}'

func cat_init(token: str, name: str, skill: str) -> str

源代码在GitHub上查看
python
def cat_init(token: str, name: str, skill: str) -> str:
    data = token_to_dict(token)
    if data['name'] != 'Default0':
        logger.info('初始化失败!')
        return '该猫猫已进行交互, 无法进行初始化!'
    if skill not in SKILL_LIST:
        return f'未知的"{skill}"技能, 请重新选择.技能列表 : {pc_info.print_skill_list()}'
    data['name'] = name
    data['skill'][SKILL_LIST.index(skill)] = True
    data['health'] = 127
    data['saturation'] = 127
    data['energy'] = 127
    token = dict_to_token(data)
    return f'''初始化完成, 名字 : "{data['name']}", 种类 : "{data['type']}", 技能 : "{skill}"\n新token : "{token}"\n请妥善保存token, 这是猫猫的唯一标识符!'''

@cat_update

func cat_show(token: str) -> str

源代码在GitHub上查看
python
@cat_update
def cat_show(token: str) -> str:
    result = pc_info.print_info(token)
    data = token_to_dict(token)
    if data['health'] / 1.27 < 20:
        return result + '\n猫猫健康状况非常差! 甚至濒临死亡!! 请立即前往医院救治!!'
    if data['health'] / 1.27 < 60:
        result += '\n猫猫健康状况较差, 请投喂食物或陪猫猫玩耍'
    if data['saturation'] / 1.27 < 40:
        result += '\n猫猫很饿, 请投喂食物'
    if data['energy'] / 1.27 < 20:
        result += '\n猫猫很累, 请抱猫睡觉, 不要投喂食物或陪它玩耍'
    return result

@cat_update

func cat_play(token: str) -> str

源代码在GitHub上查看
python
@cat_update
def cat_play(token: str) -> str:
    data = token_to_dict(token)
    if data['health'] / 1.27 < 20:
        return '猫猫健康状况非常差! 甚至濒临死亡!! 请立即前往医院救治!!'
    if data['saturation'] / 1.27 < 40:
        return '猫猫很饿, 拒接玩耍请求.'
    if data['energy'] / 1.27 < 20:
        return '猫猫很累, 拒接玩耍请求'
    data['health'] = min(data['health'] + 16, 127)
    data['saturation'] = max(data['saturation'] - 16, 0)
    data['energy'] = max(data['energy'] - 8, 0)
    token = dict_to_token(data)
    return f'''你陪猫猫玩耍了一个小时, 猫猫的生命值上涨到了{value_output(data['health'])}\n新token : "{token}"\n请妥善保存token, 这是猫猫的唯一标识符!'''

@cat_update

func cat_feed(token: str) -> str

源代码在GitHub上查看
python
@cat_update
def cat_feed(token: str) -> str:
    data = token_to_dict(token)
    if data['health'] / 1.27 < 20:
        return '猫猫健康状况非常差! 甚至濒临死亡!! 请立即前往医院救治!!'
    if data['saturation'] / 1.27 > 80:
        return '猫猫并不饿, 不需要喂食'
    if data['energy'] / 1.27 < 40:
        return '猫猫很累, 请抱猫睡觉, 不要投喂食物或陪它玩耍'
    data['saturation'] = min(data['saturation'] + 32, 127)
    data['date'] = (datetime(2025, 1, 1) - datetime.now()).days
    token = dict_to_token(data)
    return f'''你投喂了2单位标准猫粮, 猫猫的饱食度提升到了{value_output(data['saturation'])}\n新token : "{token}"\n请妥善保存token, 这是猫猫的唯一标识符!'''

@cat_update

func cat_sleep(token: str) -> str

源代码在GitHub上查看
python
@cat_update
def cat_sleep(token: str) -> str:
    data = token_to_dict(token)
    if data['health'] / 1.27 < 20:
        return '猫猫健康状况非常差! 甚至濒临死亡!! 请立即前往医院救治!!'
    if data['saturation'] / 1.27 < 40:
        return '猫猫很饿, 请喂食.'
    if data['energy'] / 1.27 > 80:
        return '猫猫很精神, 不需要睡觉'
    data['health'] = min(data['health'] + 8, 127)
    data['energy'] = min(data['energy'] + 16, 0)
    token = dict_to_token(data)
    return f'''你抱猫休息了一阵子, 猫猫的活力值提升到了{value_output(data['energy'])}\n新token : "{token}"\n请妥善保存token, 这是猫猫的唯一标识符!'''

文档完善中,欢迎提出建议或帮助我们完善。