@sjtdev/koishi-plugin-dota2tracker 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -610,14 +610,14 @@ var require_zh_CN_command = __commonJS({
610
610
  // src/locales/zh-CN.template.yml
611
611
  var require_zh_CN_template = __commonJS({
612
612
  "src/locales/zh-CN.template.yml"(exports2, module2) {
613
- module2.exports = { dota2tracker: { template: { radiant: "天辉", dire: "夜魇", won: "获胜", lost: "失败", match_id_: "比赛编号:{0}", game_mode_: "模式:{0}", start_time_: "起始时间:{0}", end_time_: "结束时间:{0}", pick_order: "第{0}手", random: "随机", hero_damage_: "英雄伤害:{0}", building_damage_: "建筑伤害:{0}", damage_received_: "受到伤害:{0}", lasthit_: "补刀:{0}", deny_: "反补:{0}", "lh/dn_": "补刀:{0}/{1}", GPM: "GPM", XPM: "XPM", heal_: "治疗量:{0}", crowd_control_duration_: "控制时间:{0}", "GPM/XPM_": "GPM/XPM:{0}", lane: "对线", lane_: "对线:", lane_advantage: "对线优势", lane_disadvantage: "对线劣势", lane_stomp: "对线碾压", lane_stomped: "对线被碾", lane_tie: "对线平手", lane_jungle: "野区霸主", analysis_successful: "录像分析成功", analysis_incomplete: "分析结果不完整", kill: "击杀", kill_contribution_: "参战率:{0}", position: "位置", position_: "位置:", position_1: "优势路", position_2: "中路", position_3: "烈士路", position_4: "采灵芝", position_5: "工具人", position_undefined: "?", total_damage: "总伤害", total_gold: "总经济", total_experience: "总经验", radiant_won: "天辉获胜", dire_won: "夜魇获胜", duration_: "持续时间:{0}", region_: "地区:{0}", match_count_: "场次:", last25matches_: "最近25场:", winrate_: "胜率:", imp_: "表现:", lane_advantage_rate_: "线优率:", top10_: "全期场次前十的英雄:", hero: "英雄", all_matches_: "全期场次:", match_count: "场次", winrate: "胜率", imp: "表现", win_count: "胜场", lose_count: "败场", recently_heroes: "近期使用场次大于1的英雄:", recently_positions: "近25场各个位置的表现:", winning_streak: "连胜", losing_streak: "连败", id: "ID", mode: "模式", kda_kc: "KDA(参战率)", time: "时间", duration: "时长", rank: "段位", un_parsed: "(未解析)", combined_win_loss_summary: "组合胜负情况:", yesterdays_summary: "昨日总结", last_weeks_summary: "上周总结", report_won: "胜", report_lost: "负", report_winrate: "胜率", anonymous_player_1: "数据未公开。", anonymous_player_2: "背景仅供展示目的,不属于{player}的数据。" } } };
613
+ module2.exports = { dota2tracker: { template: { radiant: "天辉", dire: "夜魇", won: "获胜", lost: "失败", match_id_: "比赛编号:{0}", game_mode_: "模式:{0}", start_time_: "起始时间:{0}", end_time_: "结束时间:{0}", pick_order: "第{0}手", random: "随机", hero_damage_: "英雄伤害:{0}", building_damage_: "建筑伤害:{0}", damage_received_: "受到伤害:{0}", lasthit_: "补刀:{0}", deny_: "反补:{0}", "lh/dn_": "补刀:{0}/{1}", GPM: "GPM", XPM: "XPM", heal_: "治疗量:{0}", crowd_control_duration_: "控制时间:{0}", "GPM/XPM_": "GPM/XPM:{0}", lane: "对线", lane_: "对线:", lane_advantage: "对线优势", lane_disadvantage: "对线劣势", lane_stomp: "对线碾压", lane_stomped: "对线被碾", lane_tie: "对线平手", lane_jungle: "野区霸主", analysis_successful: "录像分析成功", analysis_incomplete: "分析结果不完整", kill: "击杀", kill_contribution_: "参战率:{0}", position: "位置", position_: "位置:", position_1: "优势路", position_2: "中路", position_3: "烈士路", position_4: "采灵芝", position_5: "工具人", position_undefined: "?", total_damage: "总伤害", total_gold: "总经济", total_experience: "总经验", radiant_won: "天辉获胜", dire_won: "夜魇获胜", duration_: "持续时间:{0}", region_: "地区:{0}", match_count_: "场次:", last25matches_: "最近25场:", winrate_: "胜率:", imp_: "表现:", lane_advantage_rate_: "线优率:", top10_: "全期场次前十的英雄:", hero: "英雄", all_matches_: "全期场次:", match_count: "场次", winrate: "胜率", imp: "表现", win_count: "胜场", lose_count: "败场", recently_heroes: "近期使用场次大于1的英雄:", recently_positions: "近25场各个位置的表现:", winning_streak: "连胜", losing_streak: "连败", id: "ID", mode: "模式", kda_kc: "KDA(参战率)", time: "时间", duration: "时长", rank: "段位", un_parsed: "(未解析)", combined_win_loss_summary: "组合胜负情况:", yesterdays_summary: "昨日总结", last_weeks_summary: "上周总结", report_won: "胜", report_lost: "负", report_winrate: "胜率", anonymous_player_1: "数据未公开", anonymous_player_2: "背景仅供展示目的,不属于{player}的数据。" } } };
614
614
  }
615
615
  });
616
616
 
617
617
  // src/locales/zh-CN.yml
618
618
  var require_zh_CN = __commonJS({
619
619
  "src/locales/zh-CN.yml"(exports2, module2) {
620
- module2.exports = { dota2tracker: { heroes_nicknames: { "0": '请严格遵循 "", "" 格式填写(如下方默认数据,注意是英文半角符号),如果格式有误将仅使用英雄默认名称。可以不包含英雄默认名称。', "1": '"敌法师", "敌法", "AM"', "2": '"斧王"', "3": '"祸乱之源", "祸乱", "水桶腰"', "4": '"血魔"', "5": '"水晶室女", "冰女", "CM"', "6": '"卓尔游侠", "小黑"', "7": '"撼地者", "小牛", "牛头"', "8": '"主宰", "剑圣", "jugg", "奶棒人"', "9": '"米拉娜", "白虎", "pom"', "10": '"变体精灵", "水人"', "11": '"影魔", "影魔王", "SF", "影儿魔儿"', "12": '"幻影长矛手", "PL"', "13": '"帕克"', "14": '"帕吉", "屠夫", "扒鸡", "啪唧"', "15": '"雷泽", "电魂", "电棍"', "16": '"沙王", "SK"', "17": '"风暴之灵", "蓝猫"', "18": '"斯温", "流浪剑客", "流浪"', "19": '"小小"', "20": '"复仇之魂", "复仇", "VS"', "21": '"风行者", "风行", "WR"', "22": '"宙斯"', "23": '"昆卡", "船长"', "25": '"莉娜", "火女"', "26": '"莱恩", "恶魔巫师", "Lion"', "27": '"暗影萨满", "小Y", "小歪"', "28": '"斯拉达", "大鱼", "大鱼人"', "29": '"潮汐猎人", "潮汐", "西瓜皮"', "30": '"巫医"', "31": '"巫妖"', "32": '"力丸", "隐形刺客", "隐刺"', "33": '"谜团"', "34": '"修补匠", "TK", "Tinker"', "35": '"狙击手", "矮人火枪手", "火枪", "传说哥"', "36": '"瘟疫法师", "死灵法", "NEC"', "37": '"术士", "Warlock"', "38": '"兽王"', "39": '"痛苦女王", "女王", "QOP"', "40": '"剧毒术士", "剧毒"', "41": '"虚空假面", "虚空", "JB脸"', "42": '"冥魂大帝", "骷髅王"', "43": '"死亡先知", "DP"', "44": '"幻影刺客", "幻刺", "PA"', "45": '"帕格纳", "骨法", "湮灭法师"', "46": '"圣堂刺客", "圣堂", "TA"', "47": '"冥界亚龙", "毒龙", "Viper"', "48": '"露娜", "月骑", "Luna"', "49": '"龙骑士", "龙骑"', "50": '"戴泽", "暗影牧师", "暗牧"', "51": '"发条技师", "发条"', "52": '"拉席克", "老鹿"', "53": '"先知"', "54": '"噬魂鬼", "小狗"', "55": '"黑暗贤者", "黑贤"', "56": '"克林克兹", "小骷髅"', "57": '"全能骑士", "全能"', "58": '"魅惑魔女", "小鹿"', "59": '"哈斯卡", "神灵", "神灵武士"', "60": '"暗夜魔王", "夜魔"', "61": '"育母蜘蛛", "蜘蛛"', "62": '"赏金猎人", "赏金"', "63": '"编织者", "蚂蚁"', "64": '"杰奇洛", "双头龙"', "65": '"蝙蝠骑士", "蝙蝠"', "66": '"陈", "老陈"', "67": '"幽鬼", "SPE", "UG"', "68": '"远古冰魄", "冰魂"', "69": '"末日使者", "末日", "Doom"', "70": '"熊战士", "拍拍", "拍拍熊"', "71": '"裂魂人", "白牛", "sb"', "72": '"矮人直升机", "飞机"', "73": '"炼金术士", "炼金"', "74": '"祈求者", "卡尔"', "75": '"沉默术士", "沉默"', "76": '"殁境神蚀者", "黑鸟"', "77": '"狼人"', "78": '"酒仙", "熊猫", "熊猫酒仙"', "79": '"暗影恶魔", "毒狗"', "80": '"德鲁伊", "熊德"', "81": '"混沌骑士", "混沌", "CK"', "82": '"米波"', "83": '"树精卫士", "大树", "树精"', "84": '"食人魔魔法师", "蓝胖"', "85": '"不朽尸王", "尸王"', "86": '"拉比克"', "87": '"干扰者", "萨尔"', "88": '"司夜刺客", "小强"', "89": '"娜迦海妖", "小娜迦"', "90": '"光之守卫", "光法"', "91": '"艾欧", "小精灵", "精灵", "IO"', "92": '"维萨吉", "死灵龙", "死灵飞龙"', "93": '"斯拉克", "小鱼", "小鱼人"', "94": '"美杜莎", "一姐", "美杜莎"', "95": '"巨魔战将", "巨魔", "巨馍蘸酱"', "96": '"半人马战行者", "人马", "半人马"', "97": '"马格纳斯", "猛犸"', "98": '"伐木机", "花母鸡"', "99": '"钢背兽", "钢背"', "100": '"巨牙海民", "海民"', "101": '"天怒法师", "天怒"', "102": '"亚巴顿"', "103": '"上古巨神", "大牛"', "104": '"军团指挥官", "军团"', "105": '"工程师", "炸弹", "炸弹人"', "106": '"灰烬之灵", "火猫"', "107": '"大地之灵", "土猫"', "108": '"孽主", "大屁股"', "109": '"恐怖利刃", "TB"', "110": '"凤凰", "烧鸡"', "111": '"神谕者", "神谕"', "112": '"寒冬飞龙", "冰龙"', "113": '"天穹守望者", "电狗"', "114": '"齐天大圣", "大圣"', "119": '"邪影芳灵", "小仙女", "花仙子"', "120": '"石鳞剑士", "滚滚"', "121": '"天涯墨客", "墨客"', "123": '"森海飞霞", "松鼠", "小松鼠", "小松许"', "126": '"虚无之灵", "紫猫"', "128": '"电炎绝手", "老奶奶"', "129": '"玛尔斯"', "131": '"百戏大王"', "135": '"破晓辰星", "大锤"', "136": '"玛西"', "137": '"獸", "畜"', "138": '"琼英碧灵", "奶绿", "绿奶奶"', "145": '"凯", "鸟人"' }, broadcast: { WIN_NEGATIVE: '"侥幸赢得了比赛", "走狗屎运赢得了比赛", "躺赢了比赛", "打团都没来, 队友4V5赢得了比赛"', WIN_POSITIVE: '"带领团队走向了胜利", "暴打对面后赢得了胜利", " CARRY全场赢得了胜利", "把对面当猪宰了, 赢得了胜利", "又赢了, 这游戏就是这么枯燥, 且乏味", "直接进行一个比赛的赢"', LOSE_NEGATIVE: '"被人按在地上摩擦, 输掉了这场比赛", "悲惨地输掉了比赛", "头都被打歪了, 心态爆炸地输掉了比赛", "捕鱼被鱼吃了, 输掉了比赛", "打的是个几把", "直接进行一个比赛的输"', LOSE_POSITIVE: '"无力回天输掉了比赛", "尽力了, 但还是输了比赛", "背靠世界树, 虽败犹荣", "带不动队友, 输了比赛", "又输了, 很难受, 宁愿输的是我"', message: "{name}的{hero_name}{comment}。\nKDA:{kda},GPM/XPM:{gpm_xpm},补刀/反补:{lh_dn},伤害/塔伤:{damage},参战/参葬率:{kc_dc}" }, logger: { fetch_guilds_failed: "获取群组信息失败。", match_tracked: "追踪到来自{#each messageToLogger as item}群组 {item.platform}:{item.guildId} 的用户[{#each item.players as player}{player.nickName}({player.steamId}){#if player === item.players[item.players.length - 1]}{/if}{#if player !== item.players[item.players.length - 1]}、{/if}{/each}]{#if item !== messageToLogger[messageToLogger.length - 1]}、{/if}{/each}的尚未播报过的最新比赛 {match.id}。", parse_request_sent: "比赛 {matchId} 解析请求已成功发送至STRATZ服务器。", parse_request_failed: "比赛 {matchId} 解析请求发送失败。", match_parsed: "比赛 {matchId} 已解析,生成图片并发布于{#each guilds as guild}{guild.platform}:{guild.guildId}{#if guild !== guilds[guilds.length - 1]}、{/if}{/each}。", match_unparsed: "比赛 {matchId} 超过等待时间[{timeout}]仍未解析,生成图片并发布于{#each guilds as guild}{guild.platform}:{guild.guildId}{#if guild !== guilds[guilds.length - 1]}、{/if}{/each}。", waiting_for_parse: "比赛 {matchId} 尚未解析完成,继续等待。", report_sent: "发布{title}于{platform}:{guildId}。", rank_sent: "向{platform}:{guildId}发布{player.nickName}(${player.steamId})的段位变动信息。", ejs_error: "EJS模板渲染错误:{error}" } } };
620
+ module2.exports = { dota2tracker: { heroes_nicknames: { "0": '请严格遵循 "", "" 格式填写(如下方默认数据,注意是英文半角符号),如果格式有误将仅使用英雄默认名称。可以不包含英雄默认名称。', "1": '"敌法师", "敌法", "AM"', "2": '"斧王"', "3": '"祸乱之源", "祸乱", "水桶腰"', "4": '"血魔"', "5": '"水晶室女", "冰女", "CM"', "6": '"卓尔游侠", "小黑"', "7": '"撼地者", "小牛", "牛头"', "8": '"主宰", "剑圣", "jugg", "奶棒人"', "9": '"米拉娜", "白虎", "pom"', "10": '"变体精灵", "水人"', "11": '"影魔", "影魔王", "SF", "影儿魔儿"', "12": '"幻影长矛手", "PL"', "13": '"帕克"', "14": '"帕吉", "屠夫", "扒鸡", "啪唧"', "15": '"雷泽", "电魂", "电棍"', "16": '"沙王", "SK"', "17": '"风暴之灵", "蓝猫"', "18": '"斯温", "流浪剑客", "流浪"', "19": '"小小"', "20": '"复仇之魂", "复仇", "VS"', "21": '"风行者", "风行", "WR"', "22": '"宙斯"', "23": '"昆卡", "船长"', "25": '"莉娜", "火女"', "26": '"莱恩", "恶魔巫师", "Lion"', "27": '"暗影萨满", "小Y", "小歪"', "28": '"斯拉达", "大鱼", "大鱼人"', "29": '"潮汐猎人", "潮汐", "西瓜皮"', "30": '"巫医"', "31": '"巫妖"', "32": '"力丸", "隐形刺客", "隐刺"', "33": '"谜团"', "34": '"修补匠", "TK", "Tinker"', "35": '"狙击手", "矮人火枪手", "火枪", "传说哥"', "36": '"瘟疫法师", "死灵法", "NEC"', "37": '"术士", "Warlock"', "38": '"兽王"', "39": '"痛苦女王", "女王", "QOP"', "40": '"剧毒术士", "剧毒"', "41": '"虚空假面", "虚空", "JB脸"', "42": '"冥魂大帝", "骷髅王"', "43": '"死亡先知", "DP"', "44": '"幻影刺客", "幻刺", "PA"', "45": '"帕格纳", "骨法", "湮灭法师"', "46": '"圣堂刺客", "圣堂", "TA"', "47": '"冥界亚龙", "毒龙", "Viper"', "48": '"露娜", "月骑", "Luna"', "49": '"龙骑士", "龙骑"', "50": '"戴泽", "暗影牧师", "暗牧"', "51": '"发条技师", "发条"', "52": '"拉席克", "老鹿"', "53": '"先知"', "54": '"噬魂鬼", "小狗"', "55": '"黑暗贤者", "黑贤"', "56": '"克林克兹", "小骷髅"', "57": '"全能骑士", "全能"', "58": '"魅惑魔女", "小鹿"', "59": '"哈斯卡", "神灵", "神灵武士"', "60": '"暗夜魔王", "夜魔"', "61": '"育母蜘蛛", "蜘蛛"', "62": '"赏金猎人", "赏金"', "63": '"编织者", "蚂蚁"', "64": '"杰奇洛", "双头龙"', "65": '"蝙蝠骑士", "蝙蝠"', "66": '"陈", "老陈"', "67": '"幽鬼", "SPE", "UG"', "68": '"远古冰魄", "冰魂"', "69": '"末日使者", "末日", "Doom"', "70": '"熊战士", "拍拍", "拍拍熊"', "71": '"裂魂人", "白牛", "sb"', "72": '"矮人直升机", "飞机"', "73": '"炼金术士", "炼金"', "74": '"祈求者", "卡尔"', "75": '"沉默术士", "沉默"', "76": '"殁境神蚀者", "黑鸟"', "77": '"狼人"', "78": '"酒仙", "熊猫", "熊猫酒仙"', "79": '"暗影恶魔", "毒狗"', "80": '"德鲁伊", "熊德"', "81": '"混沌骑士", "混沌", "CK"', "82": '"米波"', "83": '"树精卫士", "大树", "树精"', "84": '"食人魔魔法师", "蓝胖"', "85": '"不朽尸王", "尸王"', "86": '"拉比克"', "87": '"干扰者", "萨尔"', "88": '"司夜刺客", "小强"', "89": '"娜迦海妖", "小娜迦"', "90": '"光之守卫", "光法"', "91": '"艾欧", "小精灵", "精灵", "IO"', "92": '"维萨吉", "死灵龙", "死灵飞龙"', "93": '"斯拉克", "小鱼", "小鱼人"', "94": '"美杜莎", "一姐", "美杜莎"', "95": '"巨魔战将", "巨魔", "巨馍蘸酱"', "96": '"半人马战行者", "人马", "半人马"', "97": '"马格纳斯", "猛犸"', "98": '"伐木机", "花母鸡"', "99": '"钢背兽", "钢背"', "100": '"巨牙海民", "海民"', "101": '"天怒法师", "天怒"', "102": '"亚巴顿"', "103": '"上古巨神", "大牛"', "104": '"军团指挥官", "军团"', "105": '"工程师", "炸弹", "炸弹人"', "106": '"灰烬之灵", "火猫"', "107": '"大地之灵", "土猫"', "108": '"孽主", "大屁股"', "109": '"恐怖利刃", "TB"', "110": '"凤凰", "烧鸡"', "111": '"神谕者", "神谕"', "112": '"寒冬飞龙", "冰龙"', "113": '"天穹守望者", "电狗"', "114": '"齐天大圣", "大圣"', "119": '"邪影芳灵", "小仙女", "花仙子"', "120": '"石鳞剑士", "滚滚"', "121": '"天涯墨客", "墨客"', "123": '"森海飞霞", "松鼠", "小松鼠", "小松许"', "126": '"虚无之灵", "紫猫"', "128": '"电炎绝手", "老奶奶"', "129": '"玛尔斯"', "131": '"百戏大王"', "135": '"破晓辰星", "大锤"', "136": '"玛西"', "137": '"獸", "畜"', "138": '"琼英碧灵", "奶绿", "绿奶奶"', "145": '"凯", "鸟人"' }, broadcast: { WIN_NEGATIVE: '"侥幸赢得了比赛", "走狗屎运赢得了比赛", "躺赢了比赛", "打团都没来, 队友4V5赢得了比赛"', WIN_POSITIVE: '"带领团队走向了胜利", "暴打对面后赢得了胜利", " CARRY全场赢得了胜利", "把对面当猪宰了, 赢得了胜利", "又赢了, 这游戏就是这么枯燥, 且乏味", "直接进行一个比赛的赢"', LOSE_NEGATIVE: '"被人按在地上摩擦, 输掉了这场比赛", "悲惨地输掉了比赛", "头都被打歪了, 心态爆炸地输掉了比赛", "捕鱼被鱼吃了, 输掉了比赛", "打的是个几把", "直接进行一个比赛的输"', LOSE_POSITIVE: '"无力回天输掉了比赛", "尽力了, 但还是输了比赛", "背靠世界树, 虽败犹荣", "带不动队友, 输了比赛", "又输了, 很难受, 宁愿输的是我"', message: "{name}的{hero_name}{comment}。\nKDA:{kda},GPM/XPM:{gpm_xpm},补刀/反补:{lh_dn},伤害/塔伤:{damage},参战/参葬率:{kc_dc}" }, logger: { fetch_guilds_failed: "获取群组信息失败。", match_tracked: "追踪到来自{#each messageToLogger as item}群组 {item.platform}:{item.guildId} 的用户[{#each item.players as player}{player.nickName}({player.steamId}){#if player === item.players[item.players.length - 1]}{/if}{#if player !== item.players[item.players.length - 1]}、{/if}{/each}]{#if item !== messageToLogger[messageToLogger.length - 1]}、{/if}{/each}的尚未播报过的最新比赛 {match.id}。", parse_request_sent: "比赛 {matchId} 解析请求已成功发送至STRATZ服务器。", parse_request_failed: "比赛 {matchId} 解析请求发送失败。", match_parsed: "比赛 {matchId} 已解析,生成图片并发布于{#each guilds as guild}{guild.platform}:{guild.guildId}{#if guild !== guilds[guilds.length - 1]}、{/if}{/each}。", match_unparsed: "比赛 {matchId} 超过等待时间[{timeout}]仍未解析,生成图片并发布于{#each guilds as guild}{guild.platform}:{guild.guildId}{#if guild !== guilds[guilds.length - 1]}、{/if}{/each}。", waiting_for_parse: "比赛 {matchId} 尚未解析完成,继续等待。", report_sent: "发布{title}于{platform}:{guildId}。", rank_sent: "向{platform}:{guildId}发布{player.nickName}({player.steamId})的段位变动信息。", ejs_error: "EJS模板渲染错误:{error}" } } };
621
621
  }
622
622
  });
623
623
 
@@ -1132,7 +1132,7 @@ function getFormattedPlayerData(param) {
1132
1132
  }
1133
1133
  return a.heroId - b.heroId;
1134
1134
  });
1135
- player.heroesPerformanceTop10 = playerExtra?.heroesPerformance.slice(0, 10);
1135
+ player.heroesPerformanceTop10 = playerExtra?.heroesPerformance.slice(0, 10) ?? [];
1136
1136
  if (genHero) {
1137
1137
  const { matchCount, winCount, imp } = player.heroesPerformanceTop10[0];
1138
1138
  player.matchCount = matchCount;
@@ -1386,12 +1386,17 @@ var name = "dota2tracker";
1386
1386
  var usage = "";
1387
1387
  var inject = ["http", "database", "cron", "puppeteer", "cache"];
1388
1388
  var pluginDir2 = import_path2.default.resolve(__dirname, "..");
1389
+ var GraphqlLanguageEnum = /* @__PURE__ */ ((GraphqlLanguageEnum2) => {
1390
+ GraphqlLanguageEnum2["en-US"] = "ENGLISH";
1391
+ GraphqlLanguageEnum2["zh-CN"] = "S_CHINESE";
1392
+ return GraphqlLanguageEnum2;
1393
+ })(GraphqlLanguageEnum || {});
1389
1394
  var Config = import_koishi2.Schema.intersect([
1390
1395
  import_koishi2.Schema.object({
1391
1396
  STRATZ_API_TOKEN: import_koishi2.Schema.string().required().role("secret"),
1392
1397
  dataParsingTimeoutMinutes: import_koishi2.Schema.number().default(60).min(0).max(1440),
1393
1398
  urlInMessageType: import_koishi2.Schema.array(import_koishi2.Schema.union([import_koishi2.Schema.const("match"), import_koishi2.Schema.const("player"), import_koishi2.Schema.const("hero")])).role("checkbox")
1394
- }).i18n(["zh-CN", "en-US"].reduce((acc, cur) => (acc[cur] = globRequire_locales_schema_yml(`./locales/${cur}.schema.yml`)._config.base, acc), {})),
1399
+ }).i18n(Object.keys(GraphqlLanguageEnum).reduce((acc, cur) => (acc[cur] = globRequire_locales_schema_yml(`./locales/${cur}.schema.yml`)._config.base, acc), {})),
1395
1400
  import_koishi2.Schema.intersect([
1396
1401
  import_koishi2.Schema.object({
1397
1402
  rankBroadSwitch: import_koishi2.Schema.boolean().default(false)
@@ -1405,7 +1410,7 @@ var Config = import_koishi2.Schema.intersect([
1405
1410
  }),
1406
1411
  import_koishi2.Schema.object({})
1407
1412
  ])
1408
- ]).i18n(["zh-CN", "en-US"].reduce((acc, cur) => (acc[cur] = globRequire_locales_schema_yml(`./locales/${cur}.schema.yml`)._config.rank, acc), {})),
1413
+ ]).i18n(Object.keys(GraphqlLanguageEnum).reduce((acc, cur) => (acc[cur] = globRequire_locales_schema_yml(`./locales/${cur}.schema.yml`)._config.rank, acc), {})),
1409
1414
  import_koishi2.Schema.intersect([
1410
1415
  import_koishi2.Schema.object({
1411
1416
  dailyReportSwitch: import_koishi2.Schema.boolean().default(false)
@@ -1429,22 +1434,17 @@ var Config = import_koishi2.Schema.intersect([
1429
1434
  }),
1430
1435
  import_koishi2.Schema.object({})
1431
1436
  ])
1432
- ]).i18n(["zh-CN", "en-US"].reduce((acc, cur) => (acc[cur] = globRequire_locales_schema_yml(`./locales/${cur}.schema.yml`)._config.report, acc), {})),
1437
+ ]).i18n(Object.keys(GraphqlLanguageEnum).reduce((acc, cur) => (acc[cur] = globRequire_locales_schema_yml(`./locales/${cur}.schema.yml`)._config.report, acc), {})),
1433
1438
  import_koishi2.Schema.object({
1434
1439
  template_match: import_koishi2.Schema.union([...readDirectoryFilesSync(import_path2.default.join(pluginDir2, "template", "match"))]).default("match_1"),
1435
1440
  template_player: import_koishi2.Schema.union([...readDirectoryFilesSync(import_path2.default.join(pluginDir2, "template", "player"))]).default("player_1"),
1436
1441
  template_hero: import_koishi2.Schema.union([...readDirectoryFilesSync(import_path2.default.join(pluginDir2, "template", "hero"))]).default("hero_1"),
1437
1442
  playerRankEstimate: import_koishi2.Schema.boolean().default(true)
1438
- }).i18n(["zh-CN", "en-US"].reduce((acc, cur) => (acc[cur] = globRequire_locales_schema_yml(`./locales/${cur}.schema.yml`)._config.template, acc), {}))
1443
+ }).i18n(Object.keys(GraphqlLanguageEnum).reduce((acc, cur) => (acc[cur] = globRequire_locales_schema_yml(`./locales/${cur}.schema.yml`)._config.template, acc), {}))
1439
1444
  ]);
1440
1445
  var pendingMatches = [];
1441
1446
  var random = new import_koishi3.Random(() => Math.random());
1442
1447
  var days_30 = 2592e6;
1443
- var GraphqlLanguageEnum = /* @__PURE__ */ ((GraphqlLanguageEnum2) => {
1444
- GraphqlLanguageEnum2["en-US"] = "ENGLISH";
1445
- GraphqlLanguageEnum2["zh-CN"] = "S_CHINESE";
1446
- return GraphqlLanguageEnum2;
1447
- })(GraphqlLanguageEnum || {});
1448
1448
  var constantLocales = {};
1449
1449
  async function apply(ctx, config) {
1450
1450
  init(ctx.http, ctx.setTimeout, config.STRATZ_API_TOKEN);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sjtdev/koishi-plugin-dota2tracker",
3
3
  "description": "koishi插件-追踪群友的DOTA2对局",
4
- "version": "1.4.0",
4
+ "version": "1.4.1",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "files": [
@@ -32,7 +32,7 @@
32
32
  "moment": "^2.30.1"
33
33
  },
34
34
  "peerDependencies": {
35
- "koishi": "^4.18.3"
35
+ "koishi": "^4.18.7"
36
36
  },
37
37
  "koishi": {
38
38
  "preview": "true",
package/readme.md CHANGED
@@ -6,7 +6,7 @@
6
6
  [![npm](https://img.shields.io/npm/v/@sjtdev/koishi-plugin-dota2tracker/next?style=flat-square)](https://www.npmjs.com/package/@sjtdev/koishi-plugin-dota2tracker)
7
7
  [![npm downloads](https://img.shields.io/npm/dm/@sjtdev/koishi-plugin-dota2tracker.svg?style=flat-square)](https://www.npmjs.com/package/@sjtdev/koishi-plugin-dota2tracker)
8
8
  > [!TIP]
9
- > 两个标签取版本号最高的版为最新版本
9
+ > 两个标签取版本号最高为最新版本
10
10
 
11
11
  DOTA2Bot插件-提供自动追踪群友的最新对局的功能(需群友绑定),以及一系列查询功能。
12
12
  ### 安装
@@ -11,6 +11,7 @@
11
11
  background-color: black;
12
12
  color: white;
13
13
  width: 800px;
14
+ font-family: 'MiSans', sans-serif;
14
15
  }
15
16
  p {
16
17
  margin: 0;
@@ -11,6 +11,7 @@
11
11
  background-color: black;
12
12
  color: white;
13
13
  width: 800px;
14
+ font-family: 'MiSans', sans-serif;
14
15
  }
15
16
 
16
17
  .wrapper > *:not(.skills) {
@@ -818,13 +819,13 @@
818
819
  <div class="attributes">
819
820
  ${item.special_values
820
821
  .filter(sv => sv.heading_loc)
821
- .map((sv) =>
822
+ .map((sv) =>
822
823
  `<p>
823
824
  <span class="heading">${sv.heading_loc}</span>
824
825
  <span class="values">
825
826
  ${!(sv.values_float.every(value => value === 0) || sv.values_float.length == 0) ?
826
827
  `<span class="primary${(sv.values_float.every(value => value === 0) || sv.values_float.length == 0)?" empty":""}">
827
- ${(!((sv.values_float.every(value => value === 0) || sv.values_float.length == 0) && (sv.values_scepter.length || sv.values_shard.length || sv.facet_bonus.name))
828
+ ${(!((sv.values_float.every(value => value === 0) || sv.values_float.length == 0) && (sv.values_scepter.length || sv.values_shard.length || sv.facet_bonus.name))
828
829
  ? (sv.values_float.map(value => value + (sv.is_percentage ? "%" : "")).join(" / ")) : "")}
829
830
  </span>` : "" }
830
831
  ${sv.values_scepter && sv.values_scepter.length ?
@@ -839,7 +840,7 @@
839
840
  `<span class="alternative facet">
840
841
  <span class="facet"><span class="name_back type_${hero.facets.find(facet=>facet.name==sv.facet_bonus.name).color}"><img src="${utils.getImageUrl(hero.facets.find(facet=>facet.name==sv.facet_bonus.name).icon, ImageType.IconsFacets)}" />${sv.facet_bonus.values.map(value => value + (sv.is_percentage ? "%" : "")).join(" / ")}</span></span>
841
842
  </span>` : "" }
842
- ${sv.bonuses.length ?
843
+ ${sv.bonuses.length ?
843
844
  `<span class="alternative talent">
844
845
  ${sv.bonuses.map(bonus=>` <img src="${utils.getImageUrl("talents","icons","svg")}"/>${(bonus.value>0?'<span class="plus">+</span>':"")+bonus.value+(sv.is_percentage?"%":"")}`).join(" ")}
845
846
  </span>` : "" }
@@ -5,7 +5,10 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Document</title>
7
7
  <style>
8
- html,
8
+ html {
9
+ width: 816px;
10
+ font-family: 'MiSans', sans-serif;
11
+ }
9
12
  body {
10
13
  background-color: black;
11
14
  color: white;
@@ -810,7 +813,7 @@
810
813
  <p class="time">${utils.sec2time(item.time)}</p>
811
814
  </div>`
812
815
  : `
813
- <div class="item" style="visibility:hidden"}">
816
+ <div class="item" style="visibility:hidden">
814
817
  <img src="${utils.getImageUrl("blink", ImageType.Items)}" alt="" />
815
818
  <p class="time">--:--</p>
816
819
  </div>`
@@ -827,7 +830,7 @@
827
830
  <p class="time">${utils.sec2time(item.time)}</p>
828
831
  </div>`
829
832
  : `
830
- <div class="item back" style="visibility:hidden"}">
833
+ <div class="item back" style="visibility:hidden">
831
834
  <img src="${utils.getImageUrl("blink", ImageType.Items)}" alt="" />
832
835
  <p class="time">--:--</p>
833
836
  </div>`
@@ -883,7 +886,7 @@
883
886
  <p class="time">${utils.sec2time(item.time)}</p>
884
887
  </div>`
885
888
  : `
886
- <div class="item" style="visibility:hidden"}">
889
+ <div class="item" style="visibility:hidden">
887
890
  <img src="${utils.getImageUrl("blink", ImageType.Items)}" alt="" />>
888
891
  <p class="time">--:--</p>
889
892
  </div>`
@@ -898,7 +901,7 @@
898
901
  <p class="time">${utils.sec2time(item.time)}</p>
899
902
  </div>`
900
903
  : `
901
- <div class="item back" style="visibility:hidden"}">
904
+ <div class="item back" style="visibility:hidden">
902
905
  <img src="${utils.getImageUrl("blink", ImageType.Items)}" alt="" />
903
906
  <p class="time">--:--</p>
904
907
  </div>`
@@ -931,7 +934,7 @@
931
934
  <p class="time">${utils.sec2time(item.time)}</p>
932
935
  </div>`
933
936
  : `
934
- <div class="item" style="visibility:hidden"}">
937
+ <div class="item" style="visibility:hidden">
935
938
  <img src="${utils.getImageUrl("blink", ImageType.Items)}" alt="" />>
936
939
  <p class="time">--:--</p>
937
940
  </div>`
@@ -946,7 +949,7 @@
946
949
  <p class="time">${utils.sec2time(item.time)}</p>
947
950
  </div>`
948
951
  : `
949
- <div class="item back" style="visibility:hidden"}">
952
+ <div class="item back" style="visibility:hidden">
950
953
  <img src="${utils.getImageUrl("blink", ImageType.Items)}" alt="" />
951
954
  <p class="time">--:--</p>
952
955
  </div>`
@@ -17,7 +17,9 @@
17
17
 
18
18
  html,
19
19
  body {
20
+ overflow: hidden;
20
21
  width: 800px;
22
+ font-family: 'MiSans', sans-serif;
21
23
  }
22
24
 
23
25
  nav {
@@ -305,7 +307,8 @@
305
307
 
306
308
  .player > .titles {
307
309
  grid-row: 4;
308
- grid-column: 3;
310
+ grid-column: 2/4;
311
+ margin-left: 4px;
309
312
  /* text-shadow: 1px 1px 0 #333; 设置阴影颜色及偏移 */
310
313
  }
311
314
  .player > .titles > span {
@@ -561,7 +564,7 @@
561
564
  <span class="rank">${`[${$t("dota2tracker.template.ranks."+player.rank.medal)}${player.rank.star||""}]`}</span>
562
565
  <span class="name">${eh(player.steamAccount.name)}</span>
563
566
  </div>
564
- <p class="pick">${player.isRandom?$t("dota2tracker.template.random"):$t("dota2tracker.template.pick_order",(player.order == null ? "?" : player.order + 1))} ${$t("dota2tracker.template.position_"+player.position?.slice(-1))??''}</p>
567
+ <p class="pick">${player.isRandom?$t("dota2tracker.template.random"):$t("dota2tracker.template.pick_order", [player.order == null ? "?" : player.order + 1])} ${$t("dota2tracker.template.position_"+player.position?.slice(-1))??''}</p>
565
568
  <p class="networth">
566
569
  <span class="gold">${utils.formatNumber(player.networth)}</span>
567
570
  (${(player.heroDamage / player.networth)?.toFixed(2)})
@@ -11,6 +11,7 @@
11
11
  background-color: black;
12
12
  color: white;
13
13
  width: 800px;
14
+ font-family: 'MiSans', sans-serif;
14
15
  }
15
16
 
16
17
  .wrapper > * {
@@ -8,7 +8,8 @@
8
8
  margin: 0;
9
9
  padding: 0;
10
10
  background-color: #0000;
11
- }
11
+ font-family: 'MiSans', sans-serif;
12
+ }
12
13
  div {
13
14
  width: 128px;
14
15
  height: 128px;
@@ -29,7 +30,7 @@
29
30
  </style>
30
31
  </head>
31
32
  <div>
32
- <img src="<%= utils.getImageUrl('medal_' + (rank.inTop100 ?? rank.medal)) %>" />
33
+ <img src="<%= utils.getImageUrl('medal_' + (rank.inTop100 ?? rank.medal)) %>" />
33
34
  <img src="<%= utils.getImageUrl("star_" + rank.star) %>" />
34
35
  <p><%= rank.leader %></p>
35
36
  </div>
@@ -12,6 +12,7 @@
12
12
  html {
13
13
  width: 1024px;
14
14
  height: 768px;
15
+ font-family: 'MiSans', sans-serif;
15
16
  }
16
17
  body {
17
18
  background: no-repeat center center / cover;
@@ -12,6 +12,7 @@
12
12
  color: white;
13
13
  width: 600px;
14
14
  font-size: 14px;
15
+ font-family: 'MiSans', sans-serif;
15
16
  }
16
17
  body > * {
17
18
  width: 100%;
@@ -154,8 +155,8 @@
154
155
  <% if (player.avgImp < 0) imp.sign = "-"; %>
155
156
  <% if (imp.absValue > 25) { %>
156
157
  <% imp.isOver = true; %>
157
- <% if (player.avgImp > 0) imp.right = imp.absValue; %>
158
- <% if (player.avgImp < 0) imp.left = imp.absValue; %>
158
+ <% if (player.avgImp > 0) imp.right = imp.absValue; %>
159
+ <% if (player.avgImp < 0) imp.left = imp.absValue; %>
159
160
  <% } else imp.left = imp.right = imp.absValue; %>
160
161
  <div class="score_bar<%= player.avgImp > 0 ? " pos" : " neg" %><%= Math.abs(player.avgImp) > 25 ? " over" : "" %>">
161
162
  <div class="left" <%- `style="width: ${imp.left}px"` %>></div>