fixed # 新增开垦指令

This commit is contained in:
2026-10-23 12:11:08 +08:00
parent 79ae03bf95
commit d0c1741940
12 changed files with 455 additions and 9 deletions
+11
View File
@@ -8,6 +8,17 @@
使用 scripts/build_zhenxun.py 生成ZIP,详见 docs/11-zhenxun-preview.md。
本轮没有拉取、推送或操作真实机器人。
## 开垦与旧用户土地
发送“开垦 条件”查看下一块地的等级和农场币费用,“开垦”每次新增
1块普通空地。目前配置覆盖7~24号地,表外拒绝开垦且不扣币。
扣款、新增地块及流水在同一事务完成,重复消息不重复扣款。
有可靠旧库迁移记录,或首次成功注册记录证明初始3块的账号,首次
业务访问时一次性补3块,保留付费成果、作物及土地加成。新版初始6块
账号不额外发地。来源不明、编号/数量异常或补后超出当前30位置的账号
保留原状并提示管理员处理,不自动截断或折现。
## 图片质量
真寻网页插件配置新增“农场图片质量”,整数1~95,默认75。
+20 -1
View File
@@ -31,11 +31,13 @@ COMMANDS = {
"作物加锁":"lock", "作物解锁":"unlock", "出售作物":"sell",
"农场除虫":"clear_pests", "除虫":"clear_pests", "地块编号":"plot_ids",
"偷菜":"steal",
"开垦":"reclaim",
}
HELP = (
"开通农场 [名称]|我的农场 [高清]|农场详述 [页码]\n"
"地块编号|查看当前土地编号及开垦位置\n"
"偷菜 @目标|每日最多5次成功偷取\n"
"开垦|每次增加1块普通空地;开垦 条件|查看等级和费用\n"
"我的种子/我的作物 [页码] [文字],默认图片。\n"
"全部图片使用农场图片质量配置;仅我的农场支持高清。\n"
"种子商店 [页码]|购买种子 作物 数量|播种 作物 [数量]\n"
@@ -51,6 +53,13 @@ HELP = (
"旧版农场数据在首次使用时迁移,绑定当前机器人和平台。"
)
ERRORS = {
'land_origin_unknown': '农场初始土地来源无法确认,未补地或扣币,'
'请联系管理员核查注册或迁移记录。',
'land_compensation_capacity': '旧用户补3块后将超出当前30个绘图位置,'
'已保留原状,请联系管理员单独处理补偿。',
'land_layout_invalid': '地块编号或数量异常,未补地或扣币,请联系管理员核查。',
'land_rules_invalid': '开垦配置异常,未扣币,请联系管理员检查。',
'land_rule_unavailable': '下一块地的开垦规则尚未配置,未扣币。',
'cannot_steal_self': '不能偷自己的农场。',
'different_farm_scope': '只能偷取当前机器人、平台内的农场。',
'target_not_registered': '目标尚未开通当前农场。',
@@ -204,6 +213,16 @@ class Runtime:
)
if action == "help":
return HELP
if action == 'reclaim' and args == ['条件']:
conditions = await self.service.reclaim_conditions(who)
return (
f"下一块:{conditions['slot']}号普通空地\n"
f"所需等级:{conditions['required_level']}"
f"(当前{conditions['level']})\n"
f"所需农场币:{conditions['coin_cost']}"
f"(当前{conditions['point']})\n"
'满足条件后发送:开垦'
)
image_actions = ('farm', 'plot_ids', 'details', 'shop',
'seeds', 'crops')
if action in image_actions and action != 'farm' and '高清' in args:
@@ -347,7 +366,7 @@ class Runtime:
receipt = await self.service.lock(
who, args[0], action == "lock", op,
)
elif action in ("harvest", "eradicate", "clear_pests"):
elif action in ("harvest", "eradicate", "clear_pests", "reclaim"):
if args:
raise ValueError()
receipt = await getattr(self.service, action)(who, op)