@sjtdev/koishi-plugin-dota2tracker 1.2.6-pre2 → 1.2.6
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/changelog.md +7 -0
- package/lib/index.js +6 -24
- package/package.json +2 -2
- package/template/hero/hero_1.ejs +42 -16
package/changelog.md
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
### 1.2.6
|
|
2
|
+
因koishi更新至4.17.10修复了主动发送消息的函数,本插件的发送消息方式也换回之前的方案以避免可能的代码问题。(功能使用上与1.2.6-pre3版本一致)
|
|
3
|
+
|
|
1
4
|
### 1.2.6-pre
|
|
2
5
|
##### (因koishi尚未更新发布pre版)
|
|
3
6
|
**改进&修复**:修复了`查询英雄`图片中 技能数值未被正确替换、全才英雄基础攻击力显示错误的问题,并优化了命石描述显示方式
|
|
@@ -7,6 +10,10 @@
|
|
|
7
10
|
#### pre2
|
|
8
11
|
**改进&修复**:彻底完善了`查询英雄`图片中所有由命石、神杖、魔晶提供或改变的数值说明,修复命石说明中技能数值为百分数时未带百分号的问题。
|
|
9
12
|
|
|
13
|
+
#### pre3
|
|
14
|
+
**改进&修复**:继续优化`查询英雄`代码结构使由命石、神杖、魔晶改变的技能属性更直观;修复某些技能数据中有旧天赋加成数据留存、导致的天赋数值未被正确填充。
|
|
15
|
+
**改进**:为`艾欧`添加别名:["艾欧", "小精灵"] → ["艾欧", "小精灵", "精灵", "IO"]
|
|
16
|
+
|
|
10
17
|
### 1.2.5-fix
|
|
11
18
|
**修复**:使用临时替代方案修复由koishi-4.17.9的bug引起的无法主动发送消息(播报战报等),待koishi更新修复后回滚此改动。
|
|
12
19
|
#### fix3
|
package/lib/index.js
CHANGED
|
@@ -1133,7 +1133,7 @@ var HEROES_CHINESE = {
|
|
|
1133
1133
|
"88": ["司夜刺客", "小强"],
|
|
1134
1134
|
"89": ["娜迦海妖", "小娜迦"],
|
|
1135
1135
|
"90": ["光之守卫", "光法"],
|
|
1136
|
-
"91": ["艾欧", "小精灵"],
|
|
1136
|
+
"91": ["艾欧", "小精灵", "精灵", "IO"],
|
|
1137
1137
|
"92": ["维萨吉", "死灵龙", "死灵飞龙"],
|
|
1138
1138
|
"93": ["斯拉克", "小鱼", "小鱼人"],
|
|
1139
1139
|
"94": ["美杜莎", "一姐", "美杜莎"],
|
|
@@ -1537,8 +1537,8 @@ async function apply(ctx, config) {
|
|
|
1537
1537
|
if (target) {
|
|
1538
1538
|
talent.name_loc = talent.name_loc.replace(match[0], target.values_float.join("/"));
|
|
1539
1539
|
} else {
|
|
1540
|
-
const
|
|
1541
|
-
|
|
1540
|
+
const abilities = hero.abilities.filter((ability) => ability.special_values.some((specialValue) => specialValue.bonuses.some((bonus) => bonus.name === talent.name)));
|
|
1541
|
+
for (const ability of abilities) {
|
|
1542
1542
|
const specialValues = ability.special_values.filter((specialValue) => specialValue.bonuses.some((bonus) => bonus.name === talent.name));
|
|
1543
1543
|
const regex2 = /{s:bonus_(.*?)}/g;
|
|
1544
1544
|
let match2;
|
|
@@ -1698,10 +1698,8 @@ async function apply(ctx, config) {
|
|
|
1698
1698
|
});
|
|
1699
1699
|
const combinations = Array.from(combinationsMap.values());
|
|
1700
1700
|
try {
|
|
1701
|
-
await
|
|
1702
|
-
|
|
1703
|
-
guild,
|
|
1704
|
-
// [`${guild.platform}:${guild.guildId}`],
|
|
1701
|
+
await ctx.broadcast(
|
|
1702
|
+
[`${guild.platform}:${guild.guildId}`],
|
|
1705
1703
|
`昨日总结:
|
|
1706
1704
|
${currentsubscribedPlayers.map(
|
|
1707
1705
|
(player) => `${player.name}: ${player.winCount}胜${player.loseCount}负 胜率${Math.round(player.winCount / player.matches.length * 100)}%,平均KDA: [${player.avgKills}/${player.avgDeaths}/${player.avgAssists}](${player.avgKDA}),平均表现: ${player.avgImp > 0 ? "+" : ""}${player.avgImp}`
|
|
@@ -1779,7 +1777,7 @@ async function apply(ctx, config) {
|
|
|
1779
1777
|
KDA:${((player.kills + player.assists) / (player.deaths || 1)).toFixed(2)} [${player.kills}/${player.deaths}/${player.assists}],GPM/XPM:${player.goldPerMinute}/${player.experiencePerMinute},补刀数:${player.numLastHits}/${player.numDenies},伤害/塔伤:${player.heroDamage}/${player.towerDamage},参战/参葬率:${(player.killContribution * 100).toFixed(2)}%/${(player.deathContribution * 100).toFixed(2)}%`;
|
|
1780
1778
|
broadMatchMessage += broadPlayerMessage + "\n";
|
|
1781
1779
|
}
|
|
1782
|
-
await
|
|
1780
|
+
await ctx.broadcast([`${commingGuild.platform}:${commingGuild.guildId}`], broadMatchMessage + img);
|
|
1783
1781
|
ctx.logger.info(`${match.id}${match.parsedDateTime ? "已解析," : "已结束超过1小时仍未被解析,放弃解析直接"}生成图片并发布于${commingGuild.platform}:${commingGuild.guildId}。`);
|
|
1784
1782
|
}
|
|
1785
1783
|
if (match.parsedDateTime)
|
|
@@ -1820,22 +1818,6 @@ function genImageHTML(data, template, type) {
|
|
|
1820
1818
|
return result;
|
|
1821
1819
|
}
|
|
1822
1820
|
__name(genImageHTML, "genImageHTML");
|
|
1823
|
-
async function sendMessageToChannel(ctx, guild, broadMessage) {
|
|
1824
|
-
const targetChannels = await ctx.database.get("channel", { id: guild.guildId, platform: guild.platform });
|
|
1825
|
-
if (targetChannels.length === 1) {
|
|
1826
|
-
const bot = ctx.bots.find((bot2) => bot2.userId === targetChannels[0].assignee);
|
|
1827
|
-
if (bot) {
|
|
1828
|
-
await bot.sendMessage(guild.guildId, broadMessage);
|
|
1829
|
-
} else {
|
|
1830
|
-
throw new Error("指定的bot未找到。");
|
|
1831
|
-
}
|
|
1832
|
-
} else if (targetChannels.length > 1) {
|
|
1833
|
-
throw new Error("有复数个bot存在于该群组/频道,请移除多余bot。");
|
|
1834
|
-
} else {
|
|
1835
|
-
throw new Error("未找到目标群组/频道。");
|
|
1836
|
-
}
|
|
1837
|
-
}
|
|
1838
|
-
__name(sendMessageToChannel, "sendMessageToChannel");
|
|
1839
1821
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1840
1822
|
0 && (module.exports = {
|
|
1841
1823
|
Config,
|
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.2.6
|
|
4
|
+
"version": "1.2.6",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"typings": "lib/index.d.ts",
|
|
7
7
|
"files": [
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"moment": "^2.30.1"
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
|
-
"koishi": "^4.17.
|
|
34
|
+
"koishi": "^4.17.10"
|
|
35
35
|
},
|
|
36
36
|
"koishi": {
|
|
37
37
|
"preview": "true",
|
package/template/hero/hero_1.ejs
CHANGED
|
@@ -412,13 +412,14 @@
|
|
|
412
412
|
color: #9828ae;
|
|
413
413
|
}
|
|
414
414
|
|
|
415
|
-
.skill .description {
|
|
415
|
+
.skill > .description {
|
|
416
416
|
color: #9bb1ce;
|
|
417
417
|
margin-bottom: 32px;
|
|
418
418
|
}
|
|
419
419
|
|
|
420
|
-
.skill .facet {
|
|
420
|
+
.skill > .facet {
|
|
421
421
|
padding-left: 0;
|
|
422
|
+
margin-bottom: 16px;
|
|
422
423
|
}
|
|
423
424
|
|
|
424
425
|
.skill .value {
|
|
@@ -449,6 +450,7 @@
|
|
|
449
450
|
.skill .aghanim_description img {
|
|
450
451
|
position: unset;
|
|
451
452
|
transform: none;
|
|
453
|
+
margin-right: 8px;
|
|
452
454
|
}
|
|
453
455
|
|
|
454
456
|
.skill .notes {
|
|
@@ -463,7 +465,7 @@
|
|
|
463
465
|
margin-bottom: 12px;
|
|
464
466
|
}
|
|
465
467
|
|
|
466
|
-
.skill .attributes .
|
|
468
|
+
.skill .attributes .heading {
|
|
467
469
|
color: #546780;
|
|
468
470
|
}
|
|
469
471
|
|
|
@@ -471,7 +473,7 @@
|
|
|
471
473
|
color: #4b525d;
|
|
472
474
|
}
|
|
473
475
|
|
|
474
|
-
.skill .attributes .values
|
|
476
|
+
.skill .attributes .values img {
|
|
475
477
|
width: 16px;
|
|
476
478
|
}
|
|
477
479
|
|
|
@@ -497,6 +499,20 @@
|
|
|
497
499
|
padding-right: 0.2em;
|
|
498
500
|
}
|
|
499
501
|
|
|
502
|
+
.skill .attributes .alternative .plus {
|
|
503
|
+
display: none;
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
.skill .attributes .primary ~ .alternative .plus {
|
|
507
|
+
display: inline;
|
|
508
|
+
}
|
|
509
|
+
.skill .attributes .primary ~ .alternative::before {
|
|
510
|
+
content: "(";
|
|
511
|
+
}
|
|
512
|
+
.skill .attributes .primary ~ .alternative::after {
|
|
513
|
+
content: ")";
|
|
514
|
+
}
|
|
515
|
+
|
|
500
516
|
.skill .cooldown {
|
|
501
517
|
padding-right: 12px;
|
|
502
518
|
}
|
|
@@ -735,19 +751,29 @@
|
|
|
735
751
|
.filter(sv => sv.heading_loc)
|
|
736
752
|
.map((sv) =>
|
|
737
753
|
`<p>
|
|
738
|
-
<span class="
|
|
754
|
+
<span class="heading">${sv.heading_loc}</span>
|
|
739
755
|
<span class="values">
|
|
740
|
-
${
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
756
|
+
${!(sv.values_float.every(value => value === 0) || sv.values_float.length == 0) ?
|
|
757
|
+
`<span class="primary${(sv.values_float.every(value => value === 0) || sv.values_float.length == 0)?" empty":""}">
|
|
758
|
+
${(!((sv.values_float.every(value => value === 0) || sv.values_float.length == 0) && (sv.values_scepter.length || sv.values_shard.length || sv.facet_bonus.name))
|
|
759
|
+
? (sv.values_float.map(value => value + (sv.is_percentage ? "%" : "")).join(" / ")) : "")}
|
|
760
|
+
</span>` : "" }
|
|
761
|
+
${sv.values_scepter && sv.values_scepter.length ?
|
|
762
|
+
`<span class="alternative scepter">
|
|
763
|
+
<img src="${utils.getImageUrl("scepter")}"/>${sv.values_scepter.map(value => (value > 0 ? '<span class="plus">+</span>' : "") + value + (sv.is_percentage ? "%" : "")).join(" / ")}
|
|
764
|
+
</span>` : "" }
|
|
765
|
+
${sv.values_shard && sv.values_shard.length ?
|
|
766
|
+
`<span class="alternative shard">
|
|
767
|
+
<img src="${utils.getImageUrl("shard")}"/>${sv.values_shard.map(value => (value > 0 ? '<span class="plus">+</span>' : "") + value + (sv.is_percentage ? "%" : "")).join(" / ")}
|
|
768
|
+
</span>` : "" }
|
|
769
|
+
${sv.facet_bonus.name ?
|
|
770
|
+
`<span class="alternative facet">
|
|
771
|
+
<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 > 0 ? '<span class="plus">+</span>' : "") + value + (sv.is_percentage ? "%" : "")).join(" / ")}</span></span>
|
|
772
|
+
</span>` : "" }
|
|
773
|
+
${sv.bonuses.length ?
|
|
774
|
+
`<span class="alternative talent">
|
|
775
|
+
${sv.bonuses.map(bonus=>` <img src="${utils.getImageUrl("talents","icons","svg")}"/>${(bonus.value>0?'<span class="plus">+</span>':"")+bonus.value+(sv.is_percentage?"%":"")}`).join(" ")}
|
|
776
|
+
</span>` : "" }
|
|
751
777
|
</span>
|
|
752
778
|
</p>`)
|
|
753
779
|
.join("")}
|