import time import pathlib import toml import typing import playsound import threading import edge_tts as tts class ConfigFile: def __init__(self, path: str): self.path = pathlib.Path(path) if not self.path.exists(): self.path.touch() self.data = dict() self._load() def _load(self): """从文件加载配置数据""" with open(self.path, 'r') as f: try: self.data = toml.load(f) except toml.TomlDecodeError: self.data = {} def modify(self, key: str, value: typing.Any): """修改配置值并保存""" self.data[key] = value self.save() def save(self, path: typing.Union[str, pathlib.Path] = ""): """保存配置到文件""" save_path = pathlib.Path(path) if path else self.path with open(save_path, 'w') as f: toml.dump(self.data, f) def get(self, key: str, default: typing.Any = None) -> typing.Any: """获取配置值,如果不存在返回默认值""" return self.data.get(key, default) def action_play_voice(content): config = ConfigFile("config.toml") if config.get("auto_voice", False): return def play(): communicate = tts.Communicate( content, "zh-CN-YunjianNeural", ) communicate.save_sync( f"./cache/voice/{content}" ) playsound() threading.Thread(target=play).start() def get_daystamp() -> int: """获取当前日戳(以天为单位的整数时间戳)""" config = ConfigFile("config.toml") time_override = config.get("time_override", -1) if time_override != -1: return int(time_override) return int(time.time() // (24 * 3600))