From 3c4b85fedc5afc960313d3efa455f3d8da98d6ac Mon Sep 17 00:00:00 2001 From: milimoe Date: Fri, 8 May 2026 01:38:54 +0800 Subject: [PATCH] md 2 --- OshimaServers/Service/FunGameOrderList.cs | 356 +++++++++--------- OshimaWebAPI/Controllers/FunGameController.cs | 53 ++- OshimaWebAPI/Services/RainBOTService.cs | 26 +- 3 files changed, 225 insertions(+), 210 deletions(-) diff --git a/OshimaServers/Service/FunGameOrderList.cs b/OshimaServers/Service/FunGameOrderList.cs index 8148df1..1a5ac4a 100644 --- a/OshimaServers/Service/FunGameOrderList.cs +++ b/OshimaServers/Service/FunGameOrderList.cs @@ -1,205 +1,207 @@ -namespace Oshima.FunGame.OshimaServers.Service +using Oshima.FunGame.OshimaServers.Models; + +namespace Oshima.FunGame.OshimaServers.Service { public class FunGameOrderList { public static Dictionary ArchiveHelp { get; } = new() { - {"创建存档", "创建存档,生成随机一个自建角色"}, - {"还原存档", "没有后悔药"}, - {"我的存档", "查看账号/存档信息"}, + {"创建存档".CreateCmdInput(), "创建存档,生成随机一个自建角色"}, + {"还原存档".CreateCmdInput(), "没有后悔药"}, + {"我的存档".CreateCmdInput(), "查看账号/存档信息"}, }; public static Dictionary CharacterHelp { get; } = new() { - {"我角色 [角色序号]", "查看角色简略信息(默认1)"}, - {"我的角色 [角色序号]", "查看角色详细信息(默认1)"}, - {"设置主战 <角色序号>", "将指定角色设置为主战"}, - {"我的主战", "查看当前主战角色"}, - {"开启练级 [角色序号]", "启动练级模式"}, - {"练级结算", "收取练级奖励,并且回血和复活"}, - {"练级信息", "查看练级进度"}, - {"我的状态", "查看主战角色状态"}, - {"装备 <角色序号> <物品序号>", "装备指定物品给角色"}, - {"取消装备 <角色序号> <装备槽序号>", "卸下角色装备(槽位1-6)"}, - {"加物/添加背包物品 <角色序号> <物品序号>", "添加指定消耗品到角色背包"}, - {"减物/移除背包物品 <角色序号> <背包物品序号>", "取回角色背包的消耗品"}, - {"角色升级 [角色序号]", "提升角色等级(默认1)"}, - {"角色突破 [角色序号]", "突破等级限制(默认1)"}, - {"突破信息 [角色序号]", "查看突破需求(默认1)"}, - {"普攻升级 [角色序号]", "升级普攻等级(默认1)"}, - {"查看普攻升级 [角色序号]", "查看下一次普攻升级信息(默认1)"}, - {"技能升级 <角色序号> <技能名称>", "升级技能等级"}, - {"查看技能升级 <角色序号> <技能名称>", "查看下一次技能升级信息"}, - {"角色重随", "重新随机角色属性"}, - {"角色改名", "修改角色名字"}, - {"我的小队", "查看小队角色名单"}, - {"设置小队 <{序号...}>", "设置小队角色(1-4个参数)"}, - {"小队添加 <角色序号>", "将角色加入小队"}, - {"小队移除 <角色序号>", "将角色移出小队"}, - {"小队状态", "查看小队所有角色状态"}, - {"清空小队", "清空所有小队成员"}, - {"生命之泉", "使用金币回复角色状态"}, - {"酒馆", "使用钻石使角色获得满能量"}, + {$"{"我角色".CreateCmdInput()} [角色序号]", "查看角色简略信息(默认1)"}, + {$"{"我的角色".CreateCmdInput()} [角色序号]", "查看角色详细信息(默认1)"}, + {$"{"设置主战".CreateCmdInput()} <角色序号>", "将指定角色设置为主战"}, + {"我的主战".CreateCmdInput(), "查看当前主战角色"}, + {$"{"开启练级".CreateCmdInput()} [角色序号]", "启动练级模式"}, + {"练级结算".CreateCmdInput(), "收取练级奖励,并且回血和复活"}, + {"练级信息".CreateCmdInput(), "查看练级进度"}, + {"我的状态".CreateCmdInput(), "查看主战角色状态"}, + {$"{"装备".CreateCmdInput()} <角色序号> <物品序号>", "装备指定物品给角色"}, + {$"{"取消装备".CreateCmdInput()} <角色序号> <装备槽序号>", "卸下角色装备(槽位1-6)"}, + {$"{"加物".CreateCmdInput()}/添加背包物品 <角色序号> <物品序号>", "添加指定消耗品到角色背包"}, + {$"{"减物".CreateCmdInput()}/移除背包物品 <角色序号> <背包物品序号>", "取回角色背包的消耗品"}, + {$"{"角色升级".CreateCmdInput()} [角色序号]", "提升角色等级(默认1)"}, + {$"{"角色突破".CreateCmdInput()} [角色序号]", "突破等级限制(默认1)"}, + {$"{"突破信息".CreateCmdInput()} [角色序号]", "查看突破需求(默认1)"}, + {$"{"普攻升级".CreateCmdInput()} [角色序号]", "升级普攻等级(默认1)"}, + {$"{"查看普攻升级".CreateCmdInput()} [角色序号]", "查看下一次普攻升级信息(默认1)"}, + {$"{"技能升级".CreateCmdInput()} <角色序号> <技能名称>", "升级技能等级"}, + {$"{"查看技能升级".CreateCmdInput()} <角色序号> <技能名称>", "查看下一次技能升级信息"}, + {"角色重随".CreateCmdInput(), "重新随机角色属性"}, + {"角色改名".CreateCmdInput(), "修改角色名字"}, + {"我的小队".CreateCmdInput(), "查看小队角色名单"}, + {$"{"设置小队".CreateCmdInput()} <{{序号...}}>", "设置小队角色(1-4个参数)"}, + {$"{"小队添加".CreateCmdInput()} <角色序号>", "将角色加入小队"}, + {$"{"小队移除".CreateCmdInput()} <角色序号>", "将角色移出小队"}, + {"小队状态".CreateCmdInput(), "查看小队所有角色状态"}, + {"清空小队".CreateCmdInput(), "清空所有小队成员"}, + {"生命之泉".CreateCmdInput(), "使用金币回复角色状态"}, + {"酒馆".CreateCmdInput(), "使用钻石使角色获得满能量"}, }; public static Dictionary ItemHelp { get; } = new() { - {"我的库存 [页码]", "显示所有库存(角色+物品)"}, - {"我的库存 <类型> [页码]", "按类型查看库存(卡包/武器/防具等)"}, - {"分类库存 <索引> [页码]", "按索引分类查看物品"}, - {"物品库存 [页码]", "显示库存中所有物品"}, - {"角色库存 [页码]", "显示库存中所有角色"}, - {"我的物品 <物品序号>", "查看指定物品详细信息"}, - {"库存搜索2/库存查询2 [关键词] [页码]", "查询库存中的物品"}, - {"库存搜索/库存查询 [关键词] [页码]", "查询库存中的物品"}, - {"抽卡/十连抽卡", "金币抽卡(1000/次)"}, - {"钻石抽卡/钻石十连抽卡", "钻石抽卡(5/次)"}, - {"兑换金币 <钻石数>", "1钻石=200金币"}, - {"使用 <物品名称> <数量> [角色] [角色序号]", "使用物品(可指定角色)举例:使用大经验书 100 角色1"}, - {"使用 <物品序号> [使用次数] [角色] [角色序号]", "使用物品(可指定角色)"}, - {"使用魔法卡 <物品序号> <卡包序号>", "使用指定魔法卡"}, - {"合成魔法卡 <{物品序号...}>", "3张魔法卡合成(空格隔开)"}, - {"分解物品 <{物品序号...}>", "分解指定物品"}, - {"分解 <物品名称> <数量>", "分解指定数量物品"}, - {"强制分解 <物品名称> <数量>", "分解指定数量物品"}, - {"品质分解 <品质索引>", "按品质分解(0-6:普通/优秀/稀有/史诗/传说/神话/不朽)"}, - {"锻造配方 <{<物品名称> <数量>...}>", "创建一个锻造配方" }, - {"锻造信息", "查看已经创建的锻造配方" }, - {"取消锻造", "取消已经创建的锻造配方" }, - {"模拟锻造", "模拟锻造结果" }, - {"确认开始锻造", "确认已经创建的锻造配方并开始锻造" }, + {$"{"我的库存".CreateCmdInput()} [页码]", "显示所有库存(角色+物品)"}, + {$"{"我的库存".CreateCmdInput()} <类型> [页码]", "按类型查看库存(卡包/武器/防具等)"}, + {$"{"分类库存".CreateCmdInput()} <索引> [页码]", "按索引分类查看物品"}, + {$"{"物品库存".CreateCmdInput()} [页码]", "显示库存中所有物品"}, + {$"{"角色库存".CreateCmdInput()} [页码]", "显示库存中所有角色"}, + {$"{"我的物品".CreateCmdInput()} <物品序号>", "查看指定物品详细信息"}, + {$"{"库存搜索2".CreateCmdInput()}/库存查询2 [关键词] [页码]", "查询库存中的物品(仅搜索名称)"}, + {$"{"库存搜索".CreateCmdInput()}/库存查询 [关键词] [页码]", "查询库存中的物品(包含描述)"}, + {$"{"抽卡".CreateCmdInput()}/{"十连抽卡".CreateCmdInput()}", "金币抽卡(1000/次)"}, + {$"{"钻石抽卡".CreateCmdInput()}/{"钻石十连抽卡".CreateCmdInput()}", "钻石抽卡(5/次)"}, + {$"{"兑换金币".CreateCmdInput()} <钻石数>", "1钻石=200金币"}, + {$"{"使用".CreateCmdInput()} <物品名称> <数量> [角色] [角色序号]", "使用物品(可指定角色)举例:使用大经验书 100 角色1"}, + {$"{"使用".CreateCmdInput()} <物品序号> [使用次数] [角色] [角色序号]", "使用物品(可指定角色)"}, + {$"{"使用魔法卡".CreateCmdInput()} <物品序号> <卡包序号>", "使用指定魔法卡"}, + {$"{"合成魔法卡".CreateCmdInput()} <{{物品序号...}}>", "3张魔法卡合成(空格隔开)"}, + {$"{"分解物品".CreateCmdInput()} <{{物品序号...}}>", "分解指定物品"}, + {$"{"分解".CreateCmdInput()} <物品名称> <数量>", "分解指定数量物品"}, + {$"{"强制分解".CreateCmdInput()} <物品名称> <数量>", "分解指定数量物品"}, + {$"{"品质分解".CreateCmdInput()} <品质索引>", "按品质分解(0-6:普通/优秀/稀有/史诗/传说/神话/不朽)"}, + {$"{"锻造配方".CreateCmdInput()} <{{<物品名称> <数量>...}}>", "创建一个锻造配方" }, + {"锻造信息".CreateCmdInput(), "查看已经创建的锻造配方" }, + {"取消锻造".CreateCmdInput(), "取消已经创建的锻造配方" }, + {"模拟锻造".CreateCmdInput(), "模拟锻造结果" }, + {"确认开始锻造".CreateCmdInput(), "确认已经创建的锻造配方并开始锻造" }, }; public static Dictionary BattleHelp { get; } = new() { - {"决斗 <对方UID/昵称>", "和对方切磋(简化版)"}, - {"完整决斗 <对方UID/昵称>", "和对方切磋(完整版)"}, - {"小队决斗 <对方UID/昵称>", "小队切磋"}, - {"查询boss [boss序号]", "查看boss信息(缺省返回列表)"}, - {"讨伐boss ", "主战角色讨伐指定boss"}, - {"小队讨伐boss ", "小队讨伐指定boss"}, - {"开启练级 [角色序号]", "启动练级模式"}, - {"练级结算", "收取练级奖励,并且回血和复活"}, - {"练级信息", "查看练级进度"}, - {"生命之泉", "使用金币回复角色状态"}, - {"酒馆", "使用钻石使角色获得满能量"}, - {"排行榜/养成排行榜", "查看全服角色养成排行榜"}, - {"金币排行榜", "查看全服金币数量排行榜"}, - {"钻石排行榜", "查看全服钻石数量排行榜"}, - {"赛马排行榜", "查看全服赛马积分排行榜"}, - {"共斗排行榜", "查看全服共斗积分排行榜"}, - {"锻造排行榜", "查看全服锻造积分排行榜"}, + {$"{"决斗".CreateCmdInput()} <对方UID/昵称>", "和对方切磋(简化版)"}, + {$"{"完整决斗".CreateCmdInput()} <对方UID/昵称>", "和对方切磋(完整版)"}, + {$"{"小队决斗".CreateCmdInput()} <对方UID/昵称>", "小队切磋"}, + {$"{"查询boss".CreateCmdInput()} [boss序号]", "查看boss信息(缺省返回列表)"}, + {$"{"讨伐boss".CreateCmdInput()} ", "主战角色讨伐指定boss"}, + {$"{"小队讨伐boss".CreateCmdInput()} ", "小队讨伐指定boss"}, + {$"{"开启练级".CreateCmdInput()} [角色序号]", "启动练级模式"}, + {"练级结算".CreateCmdInput(), "收取练级奖励,并且回血和复活"}, + {"练级信息".CreateCmdInput(), "查看练级进度"}, + {"生命之泉".CreateCmdInput(), "使用金币回复角色状态"}, + {"酒馆".CreateCmdInput(), "使用钻石使角色获得满能量"}, + {$"{"排行榜".CreateCmdInput()}/养成排行榜", "查看全服角色养成排行榜"}, + {"金币排行榜".CreateCmdInput(), "查看全服金币数量排行榜"}, + {"钻石排行榜".CreateCmdInput(), "查看全服钻石数量排行榜"}, + {"赛马排行榜".CreateCmdInput(), "查看全服赛马积分排行榜"}, + {"共斗排行榜".CreateCmdInput(), "查看全服共斗积分排行榜"}, + {"锻造排行榜".CreateCmdInput(), "查看全服锻造积分排行榜"}, }; public static Dictionary PlayHelp { get; } = new() { - {"任务列表", "查看今日任务列表"}, - {"做任务 <任务序号>", "开始指定任务"}, - {"任务信息", "查看进行中任务详情"}, - {"任务结算", "结算所有未完成的任务"}, - {"世界地图", "查看当前地图"}, - {"主城", "查看主城信息"}, - {"查地区 <地区序号>", "查看指定地区信息"}, - {"探索 <地区序号> <{角色序号...}>", "探索指定地区(可多角色)"}, - {"小队探索 <地区序号>", "以小队探索指定地区"}, - {"探索结算", "结算所有未完成的探索"}, - {"挑战金币秘境 <难度>", "以小队挑战金币秘境,秘境难度1-5"}, - {"挑战钻石秘境 <难度>", "以小队挑战钻石秘境,秘境难度1-5"}, - {"挑战经验秘境 <难度>", "以小队挑战经验秘境,秘境难度1-5"}, - {"挑战地区秘境 <难度>", "以小队挑战地区锻造材料秘境,秘境难度1-5"}, - {"挑战突破秘境 <难度>", "以小队挑战角色突破材料秘境,秘境难度1-5"}, - {"挑战技能秘境 <难度>", "以小队挑战技能升级材料秘境,秘境难度1-5"}, - {"挑战魔法卡秘境 <难度>", "以小队挑战魔法卡秘境,秘境难度1-5"}, - {"锻造配方 <{<物品名称> <数量>...}>", "创建一个锻造配方" }, - {"锻造信息", "查看已经创建的锻造配方" }, - {"取消锻造", "取消已经创建的锻造配方" }, - {"模拟锻造", "模拟锻造结果" }, - {"确认开始锻造", "确认已经创建的锻造配方并开始锻造" }, - {"创建房间 <类型>", "类型:mix/team/cooperative/horseracing对应混战/团队/共斗/赛马" }, - {"加入房间 <房间号>", "加入多人游戏房间" }, - {"退出房间", "退出多人游戏房间" }, - {"开始游戏", "开始多人游戏" }, - {"房间列表", "查看本群聊的房间列表" }, - {"房间信息", "查看多人游戏房间信息" }, - {"创建赛马", "快速创建赛马房间" }, - {"加入赛马", "快速加入赛马房间" }, - {"创建共斗", "快速创建共斗房间" }, - {"创建混战", "快速创建混战房间" }, - {"创建团战", "快速创建团队死斗房间" }, + {"任务列表".CreateCmdInput(), "查看今日任务列表"}, + {$"{"做任务".CreateCmdInput()} <任务序号>", "开始指定任务"}, + {"任务信息".CreateCmdInput(), "查看进行中任务详情"}, + {"任务结算".CreateCmdInput(), "结算所有未完成的任务"}, + {"世界地图".CreateCmdInput(), "查看当前地图"}, + {"主城".CreateCmdInput(), "查看主城信息"}, + {$"{"查地区".CreateCmdInput()} <地区序号>", "查看指定地区信息"}, + {$"{"探索".CreateCmdInput()} <地区序号> <{{角色序号...}}>", "探索指定地区(可多角色)"}, + {$"{"小队探索".CreateCmdInput()} <地区序号>", "以小队探索指定地区"}, + {"探索结算".CreateCmdInput(), "结算所有未完成的探索"}, + {$"{"挑战金币秘境".CreateCmdInput()} <难度>", "以小队挑战金币秘境,秘境难度1-5"}, + {$"{"挑战钻石秘境".CreateCmdInput()} <难度>", "以小队挑战钻石秘境,秘境难度1-5"}, + {$"{"挑战经验秘境".CreateCmdInput()} <难度>", "以小队挑战经验秘境,秘境难度1-5"}, + {$"{"挑战地区秘境".CreateCmdInput()} <难度>", "以小队挑战地区锻造材料秘境,秘境难度1-5"}, + {$"{"挑战突破秘境".CreateCmdInput()} <难度>", "以小队挑战角色突破材料秘境,秘境难度1-5"}, + {$"{"挑战技能秘境".CreateCmdInput()} <难度>", "以小队挑战技能升级材料秘境,秘境难度1-5"}, + {$"{"挑战魔法卡秘境".CreateCmdInput()} <难度>", "以小队挑战魔法卡秘境,秘境难度1-5"}, + {$"{"锻造配方".CreateCmdInput()} <{{<物品名称> <数量>...}}>", "创建一个锻造配方" }, + {"锻造信息".CreateCmdInput(), "查看已经创建的锻造配方" }, + {"取消锻造".CreateCmdInput(), "取消已经创建的锻造配方" }, + {"模拟锻造".CreateCmdInput(), "模拟锻造结果" }, + {"确认开始锻造".CreateCmdInput(), "确认已经创建的锻造配方并开始锻造" }, + {$"{"创建房间".CreateCmdInput()} <类型>", "类型:mix/team/cooperative/horseracing对应混战/团队/共斗/赛马" }, + {$"{"加入房间".CreateCmdInput()} <房间号>", "加入多人游戏房间" }, + {"退出房间".CreateCmdInput(), "退出多人游戏房间" }, + {"开始游戏".CreateCmdInput(), "开始多人游戏" }, + {"房间列表".CreateCmdInput(), "查看本群聊的房间列表" }, + {"房间信息".CreateCmdInput(), "查看多人游戏房间信息" }, + {"创建赛马".CreateCmdInput(), "快速创建赛马房间" }, + {"加入赛马".CreateCmdInput(), "快速加入赛马房间" }, + {"创建共斗".CreateCmdInput(), "快速创建共斗房间" }, + {"创建混战".CreateCmdInput(), "快速创建混战房间" }, + {"创建团战".CreateCmdInput(), "快速创建团队死斗房间" }, }; public static Dictionary ClubHelp { get; } = new() { - {"社团列表", "查看公开可加入的社团列表"}, - {"查看社团", "查看指定社团信息"}, - {"我的社团", "查看我的社团信息"}, - {"私信 <对方UID/昵称> <内容>", "发送私信给对方"}, - {"加入社团 <社团序号>", "加入指定社团"}, - {"邀请加入 <对方UID>", "管理员可以邀请加入社团"}, - {"退出社团", "退出当前社团"}, - {"创建社团 <前缀>", "创建一个公开社团,若指令中包含私密一词,将创建私密社团\r\n社团前缀:3-4个字符,允许:英文字母和数字、部分特殊字符"}, - {"查看社团成员", "查看社团成员列表"}, - {"查看社团管理", "查看管理员列表"}, - {"查看申请人列表", "查看申请加入的玩家列表"}, - {"查看受邀人列表", "查看待接受邀请的玩家列表"}, - {"解散社团", "解散当前社团"}, - {"社团批准 <对方UID>", "批准加入申请"}, - {"社团拒绝 <对方UID>", "拒绝加入申请"}, - {"社团踢出 <对方UID>", "踢出社团成员"}, - {"社团转让 <对方UID>", "转让社团所有权"}, - {"社团设置 <设置项> <{参数...}>", "修改社团设置,设置项有:名称/前缀/描述/批准/公开/管理/取消管理/新社长"}, - {"社团捐献 <金币数>", "捐献金币到社团基金"}, - {"社团任务列表", "查看社团任务列表"}, - {"做社团任务 <任务序号>", "开始指定社团任务"}, - {"社团任务结算", "结算所有未完成的社团任务"}, - {"社团商店", "查看社团商店商品"}, - {"社团商店查看 <商品序号>", "查看指定商品详情"}, - {"社团商店购买 <商品序号>", "购买指定商品"}, - {"社团商店出售 <物品序号>", "向商店出售具有回收价的指定物品"}, - {"社团市场 [页码]", "查看社团市场商品"}, - {"社团市场出售 <物品序号> <定价>", "将物品寄售到社团市场上,系统手续费4%,社团收取8%作为社团基金"}, - {"社团市场下架 <市场物品序号>", "下架指定物品"}, - {"社团市场查看 <市场物品序号>", "查看指定物品"}, - {"社团市场购买 <市场物品序号>", "购买指定物品"}, - {"社团市场清空", "管理员可下架所有物品"}, + {"社团列表".CreateCmdInput(), "查看公开可加入的社团列表"}, + {"查看社团".CreateCmdInput(), "查看指定社团信息"}, + {"我的社团".CreateCmdInput(), "查看我的社团信息"}, + {$"{"私信".CreateCmdInput()} <对方UID/昵称> <内容>", "发送私信给对方"}, + {$"{"加入社团".CreateCmdInput()} <社团序号>", "加入指定社团"}, + {$"{"邀请加入".CreateCmdInput()} <对方UID>", "管理员可以邀请加入社团"}, + {"退出社团".CreateCmdInput(), "退出当前社团"}, + {$"{"创建社团".CreateCmdInput()} <前缀>", "创建一个公开社团,若指令中包含私密一词,将创建私密社团\r\n社团前缀:3-4个字符,允许:英文字母和数字、部分特殊字符"}, + {"查看社团成员".CreateCmdInput(), "查看社团成员列表"}, + {"查看社团管理".CreateCmdInput(), "查看管理员列表"}, + {"查看申请人列表".CreateCmdInput(), "查看申请加入的玩家列表"}, + {"查看受邀人列表".CreateCmdInput(), "查看待接受邀请的玩家列表"}, + {"解散社团".CreateCmdInput(), "解散当前社团"}, + {$"{"社团批准".CreateCmdInput()} <对方UID>", "批准加入申请"}, + {$"{"社团拒绝".CreateCmdInput()} <对方UID>", "拒绝加入申请"}, + {$"{"社团踢出".CreateCmdInput()} <对方UID>", "踢出社团成员"}, + {$"{"社团转让".CreateCmdInput()} <对方UID>", "转让社团所有权"}, + {$"{"社团设置".CreateCmdInput()} <设置项> <{{参数...}}>", "修改社团设置,设置项有:名称/前缀/描述/批准/公开/管理/取消管理/新社长"}, + {$"{"社团捐献".CreateCmdInput()} <金币数>", "捐献金币到社团基金"}, + {"社团任务列表".CreateCmdInput(), "查看社团任务列表"}, + {$"{"做社团任务".CreateCmdInput()} <任务序号>", "开始指定社团任务"}, + {"社团任务结算".CreateCmdInput(), "结算所有未完成的社团任务"}, + {"社团商店".CreateCmdInput(), "查看社团商店商品"}, + {$"{"社团商店查看".CreateCmdInput()} <商品序号>", "查看指定商品详情"}, + {$"{"社团商店购买".CreateCmdInput()} <商品序号>", "购买指定商品"}, + {$"{"社团商店出售".CreateCmdInput()} <物品序号>", "向商店出售具有回收价的指定物品"}, + {$"{"社团市场".CreateCmdInput()} [页码]", "查看社团市场商品"}, + {$"{"社团市场出售".CreateCmdInput()} <物品序号> <定价>", "将物品寄售到社团市场上,系统手续费4%,社团收取8%作为社团基金"}, + {$"{"社团市场下架".CreateCmdInput()} <市场物品序号>", "下架指定物品"}, + {$"{"社团市场查看".CreateCmdInput()} <市场物品序号>", "查看指定物品"}, + {$"{"社团市场购买".CreateCmdInput()} <市场物品序号>", "购买指定物品"}, + {"社团市场清空".CreateCmdInput(), "管理员可下架所有物品"}, }; public static Dictionary ActivityHelp { get; } = new() { - {"签到", "每日签到奖励"}, - {"公告", "查看系统公告"}, - {"活动", "查看活动中心"}, - {"查活动 <活动序号>", "查看指定活动详情"}, - {"做活动任务 <活动序号> <任务序号>", "做指定的活动任务"}, - {"领取奖励 <活动序号> <任务序号>", "领取活动任务的奖励"}, + {"签到".CreateCmdInput(), "每日签到奖励"}, + {"公告".CreateCmdInput(), "查看系统公告"}, + {"活动".CreateCmdInput(), "查看活动中心"}, + {$"{"查活动".CreateCmdInput()} <活动序号>", "查看指定活动详情"}, + {$"{"做活动任务".CreateCmdInput()} <活动序号> <任务序号>", "做指定的活动任务"}, + {$"{"领取奖励".CreateCmdInput()} <活动序号> <任务序号>", "领取活动任务的奖励"}, }; public static Dictionary StoreHelp { get; } = new() { - {"每日商店", "查看每日商店商品"}, - {"商店1", "查看后勤部商品"}, - {"商店2", "查看武器商会商品"}, - {"商店3", "查看杂货铺商品"}, - {"商店4", "查看慈善基金会商品"}, - {"锻造商店/商店5", "查看锻造积分商店商品"}, - {"赛马商店/商店6", "查看赛马积分商店商品"}, - {"共斗商店/商店7", "查看共斗积分商店商品"}, - {"商店查看 <商品序号>", "查看指定商品详情,访问任意商店后2分钟内可用"}, - {"商店购买 <商品序号>", "购买指定商品,访问任意商店后2分钟内可用"}, - {"商店出售 <物品序号>", "向商店出售具有回收价的指定物品"}, - {"创建报价", "创建一个交易报价"}, - {"我的报价 [页码]/查报价 <报价序号>", "查询指定报价详情"}, - {"发送报价 <报价序号>", "仅发起方可操作"}, - {"取消报价 <报价序号>", "仅发起方可操作"}, - {"接受报价 <报价序号>", "仅接收方可操作"}, - {"拒绝报价 <报价序号>", "仅接收方可操作"}, - {"报价添加物品 <报价序号> <{物品序号}...>", "仅发起方可操作"}, - {"报价添加对方物品 <报价序号> <{物品序号}...>", "仅发起方可操作"}, - {"报价移除物品 <报价序号> <{报价物品序号}...>", "仅发起方可操作"}, - {"报价移除对方物品 <报价序号> <{报价物品序号}...>", "仅发起方可操作"}, - {"市场 [页码]", "查看市场商品"}, - {"市场出售 <物品序号> <定价>", "将物品寄售到市场上,手续费15%"}, - {"市场下架 <市场物品序号>", "下架指定物品"}, - {"市场查看 <市场物品序号>", "查看指定物品"}, - {"市场购买 <市场物品序号>", "购买指定物品"}, - {"社团市场 [页码]", "查看社团市场商品"}, - {"社团市场出售 <物品序号> <定价>", "将物品寄售到社团市场上,系统手续费4%,社团收取8%作为社团基金"}, - {"社团市场下架 <市场物品序号>", "下架指定物品"}, - {"社团市场查看 <市场物品序号>", "查看指定物品"}, - {"社团市场购买 <市场物品序号>", "购买指定物品"}, - {"社团市场清空", "管理员可下架所有物品"}, + {"每日商店".CreateCmdInput(), "查看每日商店商品"}, + {"商店1".CreateCmdInput(), "查看后勤部商品"}, + {"商店2".CreateCmdInput(), "查看武器商会商品"}, + {"商店3".CreateCmdInput(), "查看杂货铺商品"}, + {"商店4".CreateCmdInput(), "查看慈善基金会商品"}, + {$"{"锻造商店".CreateCmdInput()}/{"商店5".CreateCmdInput()}", "查看锻造积分商店商品"}, + {$"{"赛马商店".CreateCmdInput()}/{"商店6".CreateCmdInput()}", "查看赛马积分商店商品"}, + {$"{"共斗商店".CreateCmdInput()}/{"商店7".CreateCmdInput()}", "查看共斗积分商店商品"}, + {$"{"商店查看".CreateCmdInput()} <商品序号>", "查看指定商品详情,访问任意商店后2分钟内可用"}, + {$"{"商店购买".CreateCmdInput()} <商品序号>", "购买指定商品,访问任意商店后2分钟内可用"}, + {$"{"商店出售".CreateCmdInput()} <物品序号>", "向商店出售具有回收价的指定物品"}, + {"创建报价".CreateCmdInput(), "创建一个交易报价"}, + {$"{"我的报价".CreateCmdInput()} [页码]/查报价 <报价序号>", "查询指定报价详情"}, + {$"{"发送报价".CreateCmdInput()} <报价序号>", "仅发起方可操作"}, + {$"{"取消报价".CreateCmdInput()} <报价序号>", "仅发起方可操作"}, + {$"{"接受报价".CreateCmdInput()} <报价序号>", "仅接收方可操作"}, + {$"{"拒绝报价".CreateCmdInput()} <报价序号>", "仅接收方可操作"}, + {$"{"报价添加物品".CreateCmdInput()} <报价序号> <{{物品序号}}...>", "仅发起方可操作"}, + {$"{"报价添加对方物品".CreateCmdInput()} <报价序号> <{{物品序号}}...>", "仅发起方可操作"}, + {$"{"报价移除物品".CreateCmdInput()} <报价序号> <{{报价物品序号}}...>", "仅发起方可操作"}, + {$"{"报价移除对方物品".CreateCmdInput()} <报价序号> <{{报价物品序号}}...>", "仅发起方可操作"}, + {$"{"市场".CreateCmdInput()} [页码]", "查看市场商品"}, + {$"{"市场出售".CreateCmdInput()} <物品序号> <定价>", "将物品寄售到市场上,手续费15%"}, + {$"{"市场下架".CreateCmdInput()} <市场物品序号>", "下架指定物品"}, + {$"{"市场查看".CreateCmdInput()} <市场物品序号>", "查看指定物品"}, + {$"{"市场购买".CreateCmdInput()} <市场物品序号>", "购买指定物品"}, + {$"{"社团市场".CreateCmdInput()} [页码]", "查看社团市场商品"}, + {$"{"社团市场出售".CreateCmdInput()} <物品序号> <定价>", "将物品寄售到社团市场上,系统手续费4%,社团收取8%作为社团基金"}, + {$"{"社团市场下架".CreateCmdInput()} <市场物品序号>", "下架指定物品"}, + {$"{"社团市场查看".CreateCmdInput()} <市场物品序号>", "查看指定物品"}, + {$"{"社团市场购买".CreateCmdInput()} <市场物品序号>", "购买指定物品"}, + {"社团市场清空".CreateCmdInput(), "管理员可下架所有物品"}, }; public static IEnumerable> GetPage(Dictionary dict, int page, int pageSize = 10) diff --git a/OshimaWebAPI/Controllers/FunGameController.cs b/OshimaWebAPI/Controllers/FunGameController.cs index 0bb5003..e7da60b 100644 --- a/OshimaWebAPI/Controllers/FunGameController.cs +++ b/OshimaWebAPI/Controllers/FunGameController.cs @@ -6310,8 +6310,16 @@ namespace Oshima.FunGame.WebAPI.Controllers } [HttpPost("exploreregion")] - public (string, string) ExploreRegion([FromQuery] long? uid = null, [FromQuery] long? id = null, [FromQuery] bool useSquad = false, [FromBody] long[]? cids = null) + public (BotReply, string) ExploreRegion([FromQuery] long? uid = null, [FromQuery] long? id = null, [FromQuery] bool useSquad = false, [FromBody] long[]? cids = null) { + MarkdownMessage md = new() + { + Content = busy + }; + BotReply reply = new() + { + Markdown = md + }; string exploreId = ""; try { @@ -6332,7 +6340,8 @@ namespace Oshima.FunGame.WebAPI.Controllers if (user.Inventory.Squad.Count == 0) { FunGameService.ReleaseUserSemaphoreSlim(userid); - return ($"你尚未设置小队,请先设置1-4名角色!", exploreId); + md.Content = $"你尚未设置小队,请先设置1-4名角色!"; + return (reply, exploreId); } else { @@ -6389,11 +6398,11 @@ namespace Oshima.FunGame.WebAPI.Controllers if (exploreTimes <= 0) { exploreTimes = 0; - msg = $"今日的探索许可已用完,无法再继续探索。"; + msg = $"今日的{"探索许可".CreateCmdInput("商店1")}已用完,无法再继续探索。"; } else if (reduce > exploreTimes) { - msg = $"本次探索需要消耗 {reduce} 个探索许可,超过了你的剩余探索许可数量({exploreTimes} 个),请减少选择的角色数量或更换探索地区。" + + msg = $"本次探索需要消耗 {reduce} 个{"探索许可".CreateCmdInput("商店1")},超过了你的剩余探索许可数量({exploreTimes} 个),请减少选择的角色数量或更换探索地区。" + $"\r\n需要注意:探索难度星级一比一兑换探索许可,并且参与探索的角色,都需要消耗相同数量的探索许可。"; } } @@ -6401,7 +6410,8 @@ namespace Oshima.FunGame.WebAPI.Controllers else { FunGameService.ReleaseUserSemaphoreSlim(userid); - return ($"没有找到与这个序号相对应的地区!", exploreId); + md.Content = $"没有找到与这个序号相对应的地区!"; + return (reply, exploreId); } // 检查角色是否正在探索 @@ -6450,7 +6460,7 @@ namespace Oshima.FunGame.WebAPI.Controllers TaskUtility.NewTask(async () => await FunGameService.GenerateExploreModel(model, region, characterIds, user)); if (msg != "") msg += "\r\n"; - msg += $"本次消耗探索许可 {reduce} 个,你的剩余探索许可:{exploreTimes} 个。需要注意:探索难度星级一比一兑换探索许可,并且参与探索的角色,都需要消耗相同数量的探索许可。"; + msg += $"本次消耗探索许可 {reduce} 个,你的剩余{"探索许可".CreateCmdInput("商店1")}:{exploreTimes} 个。需要注意:探索难度星级一比一兑换探索许可,并且参与探索的角色,都需要消耗相同数量的探索许可。"; } pc.Add("exploreTimes", exploreTimes); @@ -6461,25 +6471,36 @@ namespace Oshima.FunGame.WebAPI.Controllers } FunGameService.SetUserConfigAndReleaseSemaphoreSlim(userid, pc, user); - return (msg, exploreId); + md.Content = msg; + return (reply, exploreId); } else { FunGameService.ReleaseUserSemaphoreSlim(userid); - return (noSaved, exploreId); + md.Content = noSaved; + return (reply, exploreId); } } catch (Exception e) { FunGameService.ReleaseUserSemaphoreSlim(uid.ToString() ?? ""); if (Logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Error)) Logger.LogError(e, "Error: {e}", e); - return (busy, exploreId); + md.Content = busy; + return (reply, exploreId); } } [HttpGet("exploreinfo")] - public string GetExploreInfo([FromQuery] long? uid = null) + public BotReply GetExploreInfo([FromQuery] long? uid = null) { + MarkdownMessage md = new() + { + Content = busy + }; + BotReply reply = new() + { + Markdown = md + }; long userid = uid ?? Convert.ToInt64("10" + Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 11)); PluginConfig pc = FunGameService.GetUserConfig(userid, out _); @@ -6496,7 +6517,7 @@ namespace Oshima.FunGame.WebAPI.Controllers if (exploreTimes <= 0) { exploreTimes = 0; - msg = $"今日的探索许可已用完,无法再继续探索。"; + msg = $"今日的{"探索许可".CreateCmdInput("商店1")}已用完,无法再继续探索。"; } } else @@ -6528,13 +6549,15 @@ namespace Oshima.FunGame.WebAPI.Controllers } if (msg != "") msg += "\r\n"; - msg += $"你的剩余探索许可:{exploreTimes} 个。"; + msg += $"你的剩余{"探索许可".CreateCmdInput("商店1")}:{exploreTimes} 个。"; - return msg; + md.Content = msg; + return reply; } else { - return noSaved; + md.Content = noSaved; + return reply; } } @@ -6617,7 +6640,7 @@ namespace Oshima.FunGame.WebAPI.Controllers md.Content = msg; if (command != "") { - reply.Keyboard = new KeyboardMessage().AppendButtons(1, Button.CreateCmdButton("再探再报", command, permissionType: 0, specifyUserIds: user.AutoKey)); + reply.Keyboard = new KeyboardMessage().AppendButtons(1, Button.CreateCmdButton("再探再报", command)); } return reply; } diff --git a/OshimaWebAPI/Services/RainBOTService.cs b/OshimaWebAPI/Services/RainBOTService.cs index ef4c2b6..df3b6fe 100644 --- a/OshimaWebAPI/Services/RainBOTService.cs +++ b/OshimaWebAPI/Services/RainBOTService.cs @@ -2428,11 +2428,7 @@ namespace Oshima.FunGame.WebAPI.Services if (e.Detail == "探索信息") { - string msg = Controller.GetExploreInfo(uid); - if (msg != "") - { - await SendAsync(e, "探索信息", string.Join("\r\n", msg)); - } + await SendAsync(e, "探索信息", Controller.GetExploreInfo(uid)); return result; } @@ -2450,7 +2446,7 @@ namespace Oshima.FunGame.WebAPI.Services { string originalDetail = e.Detail; string detail = e.Detail.Replace("探索", "").Replace("前往", "").Trim(); - string msg = ""; + BotReply reply = new(); string eid = ""; string[] strings = detail.Split(FunGameConstant.SplitChars, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries); List cindexs = []; @@ -2463,11 +2459,8 @@ namespace Oshima.FunGame.WebAPI.Services } if (cindexs.Count > 1 && cindexs.Count <= 5) { - (msg, eid) = Controller.ExploreRegion(uid, cindexs[0], false, [.. cindexs.Skip(1).Select(id => (long)id)]); - if (msg.Trim() != "") - { - await SendAsync(e, "探索", msg); - } + (reply, eid) = Controller.ExploreRegion(uid, cindexs[0], false, [.. cindexs.Skip(1).Select(id => (long)id)]); + await SendAsync(e, "探索", reply); _ = Task.Run(async () => { await Task.Delay(FunGameConstant.ExploreTime * 60 * 1000); @@ -2490,7 +2483,7 @@ namespace Oshima.FunGame.WebAPI.Services { string originalDetail = e.Detail; string detail = e.Detail.Replace("小队探索", "").Trim(); - string msg = ""; + BotReply reply = ""; string eid = ""; string[] strings = detail.Split(FunGameConstant.SplitChars, StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries); List cindexs = []; @@ -2503,11 +2496,8 @@ namespace Oshima.FunGame.WebAPI.Services } if (cindexs.Count > 0) { - (msg, eid) = Controller.ExploreRegion(uid, cindexs[0], true); - if (msg.Trim() != "") - { - await SendAsync(e, "探索", msg); - } + (reply, eid) = Controller.ExploreRegion(uid, cindexs[0], true); + await SendAsync(e, "探索", reply); _ = Task.Run(async () => { await Task.Delay(FunGameConstant.ExploreTime * 60 * 1000); @@ -3692,7 +3682,7 @@ namespace Oshima.FunGame.WebAPI.Services } (Room room, List msgs) = await Controller.RoomRunGame(uid); BotReply rpy = MergeToMarkdown("该局游戏结果如下:", msgs); - rpy.Keyboard = new KeyboardMessage().AppendButtons(1, Button.CreateCmdButton("快速重新开始", $"快速重新开始")); + rpy.Keyboard = new KeyboardMessage().AppendButtons(1, Button.CreateCmdButton("快速重新开始", $"开始游戏")); await SendAsync(e, "房间", rpy, msgSeq: 1); OnlineService.ReSetRoomState(room.Roomid); }