moles-world-cli 是摩尔庄园(Mole's World)页游的非官方终端客户端。游戏登录和游玩使用二进制 TCP 协议;米饭签到使用独立的 HTTPS 接口。当前版本只暴露已核对的玩家操作,不提供任意封包接口。
项目处于早期实验阶段,功能和命令可能变化。部分操作会消耗游戏物品或货币;服务器响应异常时,请先重新登录检查状态,再决定是否重试。
- Python 3.11 或更新版本。macOS 使用钥匙串,Windows 使用凭据管理器;Linux 需要可用的 Secret Service 或 KWallet。Android 暂无受支持的
keyring后端。 - 当前已在 macOS 实服验证;Windows 和 Linux 的安装及凭据库使用尚未完成实机验证。
- 需要能连接摩尔庄园页游服务器;
checkin另需连接米饭签到服务。
从项目目录安装到虚拟环境:
python3 -m venv .venv
.venv/bin/python -m pip install .
. .venv/bin/activate
mow --help也可不安装,直接在项目目录运行 ./mow。发行包名是 moles-world-cli,主命令是 mow;moles 是兼容命令。仓库内的 ./mole 脚本也可显式使用,但安装包不会创建 mole 命令。
mow auth # 交互保存米米号或手机号及密码证明
mow # 等价于 mow login:默认账号登录 1 服
mow login --server 1 # 显式指定服务器
mow login --account <账号> --server 1auth 在终端交互读取密码,派生页游登录所需的双重 MD5 和米饭签到所需的单次 MD5,并存入系统凭据库。原始密码不写入配置文件;这两种证明仍属于密码等价秘密。程序不会在系统凭据库不可用时退回明文文件。已有旧版凭据若缺少单次 MD5,需重新运行 mow auth 才能签到。
账号管理:mow accounts 或 mow accounts list 列出账号;mow accounts default <账号> 修改默认账号;mow accounts delete <账号> 删除凭据。mow switch <账号> --server 1 切换默认账号并登录,在线会话内也可输入 switch <账号>。
| 命令 | 作用 |
|---|---|
status |
查看昵称、当前场景、地图地址和位置。 |
players、players list |
查看当前场景人数或玩家昵称和 ID。 |
friends、friends show <ID> |
查看本次登录时获取的好友 ID,或查询其中一位好友的昵称。 |
tasks |
查看进行中和已完成的任务 ID;客户端目录中有名称时一并显示。 |
bag [类别]、bag count <ID> |
查看背包类别、指定类别物品或单个物品数量。 |
map |
查看当前场景的可见出口;maps [关键词] 搜索地图目录,maps all 列出全部。 |
go <出口> |
沿当前场景的出口移步。 |
jump <场景名或ID> |
从任意场景直达;也支持 ID/类型[/格位],是否可进入由服务器决定。 |
return |
回到本次会话的上一场景。 |
cafe、home |
进入自己的餐厅、家园。 |
farm、farm status、farm feed、farm storage |
进入自己的农场,查看动物、饲料或物品仓库。 |
pig、pig status、pig items、pig tasks |
进入自己的肥肥馆,查看肥肥馆状态、物品和任务。 |
angel、angel old、angel items、angel incubation |
进入新版或旧版天使园并查看空园状态、当前园内物品;新版还可查看孵化状态。非空天使和进行中孵化记录尚未验证。 |
lahm、daily |
查看拉姆、每日礼品;子命令见下文。 |
postcards、postcards unread、postcards read <ID> |
查看明信片数量、前 20 封未读的 ID 和单封内容;读取未读明信片会标记为已读。 |
diary、guestbook |
分页查看自己的日记标题和留言摘要。 |
accounts、switch <账号> |
查看已存账号或重新登录另一账号。 |
help、quit、exit |
查看命令或断开连接。 |
jump 我的餐厅 进入个人经营餐厅,公共场景「摩尔餐厅」是另一张地图。jump 我的农场 与公共「开心农场」也不同。个人场景还支持 jump 家园、jump 我的天使园、jump 我的旧天使园;jump 我的米勒街区 会读取该账号的专属格位。场景名可用 maps <关键词> 查询,冲突时使用地图 ID。
背包物品名称来自历史客户端目录,可能有占位名称或与当前游戏不同;数量以服务器回包为准。
输入 cafe 进入个人餐厅并查看状态;也可从终端运行 mow cafe --server 1 直接登录进入。餐厅内支持:
| 命令 | 作用 |
|---|---|
look、menu [关键词] |
刷新餐厅状态或查菜谱;按名称或 ID 查询时显示制作时间、成本、产量、售价与食材。 |
stars |
查看已记录菜谱的星级和制作次数。 |
market、sell |
查看神秘商人报价后在下一行成交。出售消耗一份契约;本地最多保留报价 60 秒,实际成交可能不同。 |
cook <菜名或ID> [灶台] |
选择菜谱。 |
stove <灶台> |
按当前灶台状态放料或开火。 |
collect <灶台> [餐台] |
收取已成熟的菜品。 |
watch [灶台] |
等待启动监控时已有的菜品成熟并自动收菜;mow cafe --watch [灶台] 可直接启动监控。 |
discard <位置> |
清理烧糊的灶台菜品或餐台菜品,服务器可能收费。 |
magic |
在有烧糊菜时尝试魔法师的「恢复部分原材料」事件。 |
staff、candidates |
查看员工和可雇佣拉姆。 |
hire <拉姆ID>、fire <拉姆ID> |
雇佣或解雇拉姆员工。 |
灶台状态 3 表示烹饪中;look 根据服务端计时显示剩余时间。magic 处理后菜品不会变成熟菜。细节见 docs/restaurant-state3.md 和 docs/cafe-magic.md。
输入 home 进入自己的家园;look 查看作物,storage 查看仓库,seeds 查看种子。plant <种子名或ID> [x y] 在空闲地块种植,省略坐标时自动选择;目前仅支持背景 1220138,其中三个地块已实服验证,其余坐标来自客户端资源。water <作物ID>、spray <作物ID>、harvest <作物ID> 仅在服务端状态允许时执行。garden、家园 是 home 的别名。
作物的预计收获时间依据客户端公式和服务器当前生长速率计算,速率变化会影响结果;能否收获以服务器状态为准。
在梅森小屋输入 sell 草莓 或 sell 苹果 可以出售一个作物,目前仅开放已实服验证的这两种作物及单个出售。
在在线会话输入 pig 进入自己的肥肥馆。pig items 查看猪种和饲料,pig show <猪ID> 查看单只猪;pig add 花宝猪 放入一只花宝猪,pig feed 上等玉米 给肥肥馆喂食,pig play <猪ID> 逗猪,pig wash 给猪洗澡。放猪和喂食会消耗对应物品;目前放猪和喂食仅支持花宝猪和上等玉米。
lahm 查看自己的拉姆;lahm learning 查看学习中的拉姆(当前仅验证了空列表,非空列表会提示尚未验证);lahm follow <ID> 设置跟随,lahm home <ID> 让拉姆回家。lahm feed <ID>、lahm drink <ID>、lahm wash <ID> 分别使用巧克力豆、麦香牛奶和泡泡浴照料拉姆,消耗对应物品。ram、拉姆 是 lahm 的别名。
lahm items 查看背包里现有的拉姆用品及数量。用 lahm use <拉姆ID> <物品名或ID> 使用照料物品,例如 lahm use 144814 魔法弹簧。普通食品会消耗库存,魔法弹簧可以重复使用;若该物品可提升的属性均已满,程序不会使用它。部分物品暂不支持使用。
daily status 查看连续登录和周末礼物状态;daily list 列出已核对的固定礼品来源;daily claim <来源> 在对应场景尝试领取。当前来源为 tree-flower、chief-seed、forest-seed。米饭签到与这些页游礼品相互独立:在终端运行 mow checkin [--account <账号>],结果会显示签到成功、今日已签或失败。
diary 和 guestbook 默认显示最近 5 条,diary list --page 2 翻页;两者都支持 --page 和 --limit(每页最多 50 条)。列表只显示标题或留言摘要,需要时用 diary read <ID>、guestbook read <ID> 查看完整内容。
diary write "标题" "正文" 创建私密日记;diary publish <ID> 公开,diary private <ID> 设为私密,diary delete <ID> 删除。guestbook write "内容" 在自己的留言板留言,guestbook reply <ID> "回复" 回复留言,guestbook delete <ID> 删除留言。使用引号包住含空格的文本。日记和留言内容由服务器保存,操作结果不确定时请先查看,再决定是否重试。
mow login --agent、mow cafe --agent 和 mow switch <账号> --agent 关闭交互提示头;命令及结果文本与人类模式相同。会话支持 && 和 ||,分别在上一条成功或失败时继续,例如 cafe && look、collect 1 || look。这些连接符由程序解析,不调用系统 shell。
程序仅封装当前确认的玩家操作,不提供原始 TCP 命令或 JSON 输入输出。网络超时后会关闭结果不确定的会话,避免把可能已执行的操作直接重发。更多实现与验证信息见 docs/development.md 和 docs/terminology.md。
PYTHONPATH=src python3 -m unittest discover -s tests -q
python3 -m compileall -q src tests本项目采用 GNU Affero General Public License v3.0(AGPL-3.0-only)。完整条款见根目录 LICENSE 和 GNU 官方版本。
项目非官方,与游戏运营方无隶属关系。仓库中的游戏名称、物品、地图、任务和菜谱等目录整理自历史游戏客户端及实服观察,其来源和分发许可尚未核实;项目代码的 AGPL 许可不代表这些第三方游戏数据已获得相同许可。
