74 lines
2.3 KiB
Python
74 lines
2.3 KiB
Python
"""wechat-cli 入口"""
|
|
|
|
import sys
|
|
|
|
import click
|
|
|
|
from .core.context import AppContext
|
|
|
|
_VERSION = "0.2.4"
|
|
|
|
|
|
@click.group()
|
|
@click.version_option(version=_VERSION, prog_name="wechat-cli")
|
|
@click.option("--config", "config_path", default=None, envvar="WECHAT_CLI_CONFIG",
|
|
help="config.json 路径(默认自动查找)")
|
|
@click.pass_context
|
|
def cli(ctx, config_path):
|
|
"""WeChat CLI — 查询微信消息、联系人等数据
|
|
|
|
\b
|
|
使用示例:
|
|
wechat-cli init # 首次使用:提取密钥
|
|
wechat-cli sessions # 最近会话列表
|
|
wechat-cli sessions --limit 10 # 最近 10 个会话
|
|
wechat-cli history "张三" --limit 20 # 查看张三的最近 20 条消息
|
|
wechat-cli history "AI交流群" --start-time "2026-04-01" # 指定时间范围
|
|
wechat-cli search "Claude" --chat "AI交流群" # 在指定群里搜索关键词
|
|
wechat-cli search "你好" --limit 50 # 全局搜索
|
|
wechat-cli contacts --query "李" # 搜索联系人
|
|
wechat-cli new-messages # 获取增量新消息
|
|
"""
|
|
# init/version 命令不需要 AppContext
|
|
if ctx.invoked_subcommand in ("init", "version"):
|
|
return
|
|
|
|
try:
|
|
ctx.obj = AppContext(config_path)
|
|
except FileNotFoundError as e:
|
|
click.echo(str(e), err=True)
|
|
sys.exit(1)
|
|
except Exception as e:
|
|
click.echo(f"初始化失败: {e}", err=True)
|
|
sys.exit(1)
|
|
|
|
|
|
# 注册子命令
|
|
from .commands.init import init
|
|
from .commands.sessions import sessions
|
|
from .commands.history import history
|
|
from .commands.search import search
|
|
from .commands.contacts import contacts
|
|
from .commands.new_messages import new_messages
|
|
from .commands.members import members
|
|
from .commands.export import export
|
|
from .commands.stats import stats
|
|
from .commands.unread import unread
|
|
from .commands.favorites import favorites
|
|
|
|
cli.add_command(init)
|
|
cli.add_command(sessions)
|
|
cli.add_command(history)
|
|
cli.add_command(search)
|
|
cli.add_command(contacts)
|
|
cli.add_command(new_messages)
|
|
cli.add_command(members)
|
|
cli.add_command(export)
|
|
cli.add_command(stats)
|
|
cli.add_command(unread)
|
|
cli.add_command(favorites)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
cli()
|