# pc_cat | 小棉智能
可爱，智能且易扩展

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, 这是猫猫的唯一标识符!'''