koishi-plugin-dwrgbwiki 2.0.1 → 2.0.3
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/index.js +79 -9
- package/match.js +21 -21
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -198,7 +198,10 @@ module.exports = {
|
|
|
198
198
|
.description('接收反馈的平台(如 qq),留空则禁用反馈推送')
|
|
199
199
|
.default(''),
|
|
200
200
|
feedbackUserId: Schema.string()
|
|
201
|
-
.description('接收反馈的账号 id
|
|
201
|
+
.description('接收反馈的账号 id(私聊推送给该账号)')
|
|
202
|
+
.default(''),
|
|
203
|
+
feedbackChannelId: Schema.string()
|
|
204
|
+
.description('接收反馈的群/频道 id(推送反馈到该群,QQ 平台推荐使用群推送以避免私聊限制),优先于私聊推送')
|
|
202
205
|
.default(''),
|
|
203
206
|
noticeEnable: Schema.boolean()
|
|
204
207
|
.description('启用网易公告变动监听(正式服+共研服)')
|
|
@@ -306,6 +309,7 @@ module.exports = {
|
|
|
306
309
|
|
|
307
310
|
ctx.command('BWIKI机器人', '显示当前支持的指令列表')
|
|
308
311
|
.action(async ({ session }) => {
|
|
312
|
+
logCmd(ctx, session, 'BWIKI机器人')
|
|
309
313
|
return helpImage(ctx, config, MAIN_HELP)
|
|
310
314
|
})
|
|
311
315
|
|
|
@@ -315,6 +319,7 @@ module.exports = {
|
|
|
315
319
|
.example('胜率 小女孩 第43赛季 第3周 使用率')
|
|
316
320
|
.example('胜率 小女孩 43 3 胜率')
|
|
317
321
|
.action(async ({ session }, name, cond) => {
|
|
322
|
+
logCmd(ctx, session, '胜率', { name, cond })
|
|
318
323
|
if (!name || !name.trim()) return helpImage(ctx, config, HELP, undefined, cmdWidth(config, 'winrateWidth'))
|
|
319
324
|
return run(ctx, config, lib.collect, lib.buildHtml, name.trim(), cond, 'winrateWidth')
|
|
320
325
|
})
|
|
@@ -325,6 +330,7 @@ module.exports = {
|
|
|
325
330
|
.example('地图 红教堂 S44 3 求生者')
|
|
326
331
|
.example('地图 月亮河公园 全赛季')
|
|
327
332
|
.action(async ({ session }, name, cond) => {
|
|
333
|
+
logCmd(ctx, session, '地图', { name, cond })
|
|
328
334
|
if (!name || !name.trim()) return helpImage(ctx, config, MAP_HELP, undefined, cmdWidth(config, 'mapWidth'))
|
|
329
335
|
return run(ctx, config, lib.collectMap, lib.buildMapHtml, name.trim(), cond, 'mapWidth')
|
|
330
336
|
})
|
|
@@ -334,6 +340,7 @@ module.exports = {
|
|
|
334
340
|
.example('模仿者 侦探')
|
|
335
341
|
.example('模仿者 药剂师 260531 低级场')
|
|
336
342
|
.action(async ({ session }, name, cond) => {
|
|
343
|
+
logCmd(ctx, session, '模仿者', { name, cond })
|
|
337
344
|
if (!name || !name.trim()) return helpImage(ctx, config, MIMIC_HELP, undefined, cmdWidth(config, 'mimicWidth'))
|
|
338
345
|
return run(ctx, config, lib.collectMimic, lib.buildMimicHtml, name.trim(), cond, 'mimicWidth')
|
|
339
346
|
})
|
|
@@ -344,6 +351,7 @@ module.exports = {
|
|
|
344
351
|
.example('勋章 小女孩 20250917 7日增长率')
|
|
345
352
|
.example('勋章 小女孩 赛季同比增长率')
|
|
346
353
|
.action(async ({ session }, name, cond) => {
|
|
354
|
+
logCmd(ctx, session, '勋章', { name, cond })
|
|
347
355
|
if (!name || !name.trim()) return helpImage(ctx, config, BADGE_HELP, undefined, cmdWidth(config, 'badgeWidth'))
|
|
348
356
|
return run(ctx, config, lib.collectBadge, lib.buildBadgeHtml, name.trim(), cond, 'badgeWidth')
|
|
349
357
|
})
|
|
@@ -354,6 +362,7 @@ module.exports = {
|
|
|
354
362
|
.example('基础数据 移动速度 厂长')
|
|
355
363
|
.example('基础数据 厂长')
|
|
356
364
|
.action(async ({ session }, cond) => {
|
|
365
|
+
logCmd(ctx, session, '基础数据', { cond })
|
|
357
366
|
return basicDataImage(ctx, config, cond)
|
|
358
367
|
})
|
|
359
368
|
|
|
@@ -361,6 +370,7 @@ module.exports = {
|
|
|
361
370
|
.usage(CODEX_HELP)
|
|
362
371
|
.example('图鉴 时装 招风旗')
|
|
363
372
|
.action(async ({ session }, cond) => {
|
|
373
|
+
logCmd(ctx, session, '图鉴', { cond })
|
|
364
374
|
return codexImage(ctx, config, cond)
|
|
365
375
|
})
|
|
366
376
|
|
|
@@ -369,6 +379,7 @@ module.exports = {
|
|
|
369
379
|
.example('WIKI页面 招风旗')
|
|
370
380
|
.example('WIKI页面 杰克')
|
|
371
381
|
.action(async ({ session }, name) => {
|
|
382
|
+
logCmd(ctx, session, 'WIKI页面', { name })
|
|
372
383
|
return wikiPageImage(ctx, config, wikiStore, session.userId, name)
|
|
373
384
|
})
|
|
374
385
|
|
|
@@ -379,6 +390,7 @@ module.exports = {
|
|
|
379
390
|
.example('藏头 第五人格 谐音 时装')
|
|
380
391
|
.example('藏头 我爱你 随身物品')
|
|
381
392
|
.action(async ({ session }, cond) => {
|
|
393
|
+
logCmd(ctx, session, '藏头', { cond })
|
|
382
394
|
return cangtouText(ctx, config, cond)
|
|
383
395
|
})
|
|
384
396
|
|
|
@@ -387,6 +399,7 @@ module.exports = {
|
|
|
387
399
|
.example('藏头完整 我爱你')
|
|
388
400
|
.example('藏头完整 我爱你 首字母 时装')
|
|
389
401
|
.action(async ({ session }, cond) => {
|
|
402
|
+
logCmd(ctx, session, '藏头完整', { cond })
|
|
390
403
|
return cangtouFullImage(ctx, config, cond)
|
|
391
404
|
})
|
|
392
405
|
|
|
@@ -399,6 +412,7 @@ module.exports = {
|
|
|
399
412
|
.option('i <模式>', '合并模式:team/player/all/none,留空用默认配置')
|
|
400
413
|
.action(async ({ session, options }, sub, p1, p2) => {
|
|
401
414
|
const subFn = String(sub || '').trim().toLowerCase()
|
|
415
|
+
logCmd(ctx, session, '赛事-' + subFn, { p1, p2, mode: options && options.i })
|
|
402
416
|
if (!ctx.puppeteer) return '未检测到 puppeteer 服务,请先安装并启用 koishi-plugin-puppeteer'
|
|
403
417
|
const mode = options && options.i ? String(options.i).trim().toLowerCase() : (config.matchMerge || 'team')
|
|
404
418
|
|
|
@@ -469,6 +483,7 @@ module.exports = {
|
|
|
469
483
|
.usage(ROLE_HELP)
|
|
470
484
|
.example('角色 古董商')
|
|
471
485
|
.action(async ({ session }, name) => {
|
|
486
|
+
logCmd(ctx, session, '角色', { name })
|
|
472
487
|
return roleImage(ctx, config, name)
|
|
473
488
|
})
|
|
474
489
|
|
|
@@ -483,6 +498,7 @@ module.exports = {
|
|
|
483
498
|
.example('抽卡 幻象迷途')
|
|
484
499
|
.example('抽卡 加页手记')
|
|
485
500
|
.action(async ({ session }, type, poolId, count) => {
|
|
501
|
+
logCmd(ctx, session, '抽卡', { type, poolId, count })
|
|
486
502
|
if (!ctx.puppeteer) return '未检测到 puppeteer 服务,请先安装并启用 koishi-plugin-puppeteer'
|
|
487
503
|
if (!type || !type.trim()) return helpImage(ctx, config, GACHA_HELP, GACHA_HERO_SUB, cmdWidth(config, 'gachaWidth'))
|
|
488
504
|
const uid = session.userId
|
|
@@ -529,6 +545,7 @@ module.exports = {
|
|
|
529
545
|
|
|
530
546
|
ctx.command('抽卡资源', '查询自己的抽卡资源与已抽物品(图片版)')
|
|
531
547
|
.action(async ({ session }) => {
|
|
548
|
+
logCmd(ctx, session, '抽卡资源')
|
|
532
549
|
if (!ctx.puppeteer) return '未检测到 puppeteer 服务,请先安装并启用 koishi-plugin-puppeteer'
|
|
533
550
|
try {
|
|
534
551
|
const res = await gacha.gachaResources(gachaStore, session.userId)
|
|
@@ -553,6 +570,7 @@ module.exports = {
|
|
|
553
570
|
.example('抽卡重置 @某人')
|
|
554
571
|
.example('抽卡重置 123456789')
|
|
555
572
|
.action(async ({ session }, target) => {
|
|
573
|
+
logCmd(ctx, session, '抽卡重置', { target })
|
|
556
574
|
let uid = target && String(target).trim()
|
|
557
575
|
if (!uid) return '请 @ 要重置的用户,或直接输入其用户 id'
|
|
558
576
|
// 兼容 @at 引用:Koishi 会解析为 at 元素,从元素中提取目标用户 id
|
|
@@ -575,6 +593,9 @@ module.exports = {
|
|
|
575
593
|
}
|
|
576
594
|
})
|
|
577
595
|
.action(async ({ session, options }, content) => {
|
|
596
|
+
const raw0 = session.content ? String(session.content).trim() : ''
|
|
597
|
+
const isReply = /\s+-i\s+\d+\s*$/.test(raw0.replace(/^反馈\s*/, '').trim()) || /^-i\s+\d+/.test(raw0.replace(/^反馈\s*/, '').trim())
|
|
598
|
+
logCmd(ctx, session, '反馈' + (isReply ? '(回复)' : ''), { content })
|
|
578
599
|
// 从原始消息提取完整反馈文字(保留空格;text 类型会去掉空格)
|
|
579
600
|
const raw = session.content ? String(session.content).trim() : ''
|
|
580
601
|
const body = raw.replace(/^反馈\s*/, '').trim()
|
|
@@ -588,13 +609,38 @@ module.exports = {
|
|
|
588
609
|
const replyText = optMatch ? body.replace(/\s+-i\s+\d+\s*$/, '').trim() : (content ? String(content).trim() : '')
|
|
589
610
|
if (!replyText) return '请附上要回复给反馈者的内容,格式:反馈 <回复内容> -i <编号>'
|
|
590
611
|
const bot = ctx.bots && ctx.bots.find(b => b.platform === record.platform && b.status === 1)
|
|
591
|
-
if (!bot)
|
|
612
|
+
if (!bot) {
|
|
613
|
+
ctx.logger('dwrgbwiki').warn('回复反馈: 未找到可用机器人 | 目标=' + record.platform + ' | bots=' + JSON.stringify((ctx.bots || []).map(b => ({ p: b.platform, s: b.status, id: b.selfId || b.sid }))))
|
|
614
|
+
return '反馈者所在平台没有可用的机器人,无法回复'
|
|
615
|
+
}
|
|
616
|
+
// 优先回复到原发起反馈的群聊(channelId 是群消息端点用的 id),其次私聊反馈者
|
|
617
|
+
const targetChannel = record.channelId || record.guildId
|
|
618
|
+
if (targetChannel) {
|
|
619
|
+
try {
|
|
620
|
+
await bot.sendMessage(targetChannel, '【回复 #' + replyId + '】' + replyText + '\n(回复 ' + record.userId + ' 的反馈:' + String(record.content || '').slice(0, 50) + ')')
|
|
621
|
+
await feedbackStore.markReplied(replyId)
|
|
622
|
+
return '已回复编号 ' + replyId + '(已发到原反馈群)'
|
|
623
|
+
} catch (e) {
|
|
624
|
+
ctx.logger('dwrgbwiki').warn('回复反馈到原群失败,尝试私聊: ' + (e && e.message ? e.message : e) + ' | channelId=' + record.channelId + ' guildId=' + record.guildId + ' | stack: ' + (e && e.stack ? String(e.stack).slice(0, 200) : ''))
|
|
625
|
+
}
|
|
626
|
+
}
|
|
592
627
|
try {
|
|
593
628
|
await bot.sendPrivateMessage(record.userId, '【回复】' + replyText)
|
|
594
629
|
await feedbackStore.markReplied(replyId)
|
|
595
630
|
return '已回复编号 ' + replyId + ' 的反馈者'
|
|
596
631
|
} catch (e) {
|
|
597
|
-
|
|
632
|
+
// 私聊失败时,若配置了反馈群则发到群里兜底
|
|
633
|
+
if (config.feedbackChannelId) {
|
|
634
|
+
try {
|
|
635
|
+
await bot.sendMessage(config.feedbackChannelId, '【反馈回复 #' + replyId + '】' + replyText + '\n(目标:' + record.userId + ',私聊失败已转发至此)')
|
|
636
|
+
await feedbackStore.markReplied(replyId)
|
|
637
|
+
return '已回复编号 ' + replyId + '(私聊失败,已转发到反馈群)'
|
|
638
|
+
} catch (e2) {
|
|
639
|
+
ctx.logger('dwrgbwiki').warn('回复反馈失败: ' + (e2 && e2.message ? e2.message : e2))
|
|
640
|
+
return '回复失败:' + (e2 && e2.message ? e2.message : e2)
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
ctx.logger('dwrgbwiki').warn('回复反馈失败: ' + (e && e.message ? e.message : e) + ' | stack: ' + (e && e.stack ? String(e.stack).slice(0, 300) : '') + ' | target: ' + record.platform + '/' + record.userId + ' | bot: ' + (bot.platform || '?') + ':' + (bot.selfId || bot.sid) + ' status=' + bot.status)
|
|
598
644
|
return '回复失败:' + (e && e.message ? e.message : e)
|
|
599
645
|
}
|
|
600
646
|
}
|
|
@@ -609,28 +655,52 @@ module.exports = {
|
|
|
609
655
|
senderName,
|
|
610
656
|
platform: session.platform,
|
|
611
657
|
userId: session.userId,
|
|
658
|
+
channelId: session.channelId || '',
|
|
659
|
+
guildId: session.guildId || '',
|
|
612
660
|
time,
|
|
613
661
|
})
|
|
614
662
|
const feedbackMsg = '【反馈 #' + record.id + '】' + text + '\n反馈人:' + senderName + '\n来源:' + session.platform + '\n账号:' + session.userId + '\n时间:' + time + '\n回复:发送「反馈 <内容> -i ' + record.id + '」'
|
|
615
|
-
//
|
|
616
|
-
|
|
663
|
+
// 推送反馈:优先推送到指定群/频道,其次私聊管理员(QQ 官方机器人私聊有共同群限制)
|
|
664
|
+
const hasTarget = (config.feedbackPlatform && (config.feedbackChannelId || config.feedbackUserId))
|
|
665
|
+
if (hasTarget) {
|
|
617
666
|
const bot = ctx.bots && ctx.bots.find(b => b.platform === config.feedbackPlatform && b.status === 1)
|
|
667
|
+
if (!bot) {
|
|
668
|
+
ctx.logger('dwrgbwiki').warn('反馈推送: 未找到可用机器人 | 目标=' + config.feedbackPlatform + ' | bots=' + JSON.stringify((ctx.bots || []).map(b => ({ p: b.platform, s: b.status, id: b.selfId || b.sid }))))
|
|
669
|
+
}
|
|
618
670
|
if (bot) {
|
|
619
671
|
try {
|
|
620
|
-
|
|
621
|
-
|
|
672
|
+
if (config.feedbackChannelId) {
|
|
673
|
+
await bot.sendMessage(config.feedbackChannelId, feedbackMsg)
|
|
674
|
+
} else {
|
|
675
|
+
await bot.sendPrivateMessage(config.feedbackUserId, feedbackMsg)
|
|
676
|
+
}
|
|
677
|
+
return '已收到反馈(编号 #' + record.id + '),如果想收到回复请联系本群群主打开允许机器人主动回复消息功能'
|
|
622
678
|
} catch (e) {
|
|
623
|
-
ctx.logger('dwrgbwiki').warn('反馈推送失败: ' + (e && e.message ? e.message : e))
|
|
679
|
+
ctx.logger('dwrgbwiki').warn('反馈推送失败: ' + (e && e.message ? e.message : e) + ' | stack: ' + (e && e.stack ? String(e.stack).slice(0, 300) : '') + ' | target: ' + config.feedbackPlatform + '/' + (config.feedbackChannelId || config.feedbackUserId) + ' | bot: ' + (bot.platform || '?') + ':' + (bot.selfId || bot.sid) + ' status=' + bot.status)
|
|
624
680
|
return '已收到反馈(编号 #' + record.id + ',但推送给管理员失败,请稍后重试)'
|
|
625
681
|
}
|
|
626
682
|
}
|
|
627
683
|
return '已收到反馈(编号 #' + record.id + ',但未找到可用的推送机器人,请稍后重试)'
|
|
628
684
|
}
|
|
629
|
-
return '已收到反馈(编号 #' + record.id + '
|
|
685
|
+
return '已收到反馈(编号 #' + record.id + '),如果想收到回复请联系本群群主打开允许机器人主动回复消息功能'
|
|
630
686
|
})
|
|
631
687
|
},
|
|
632
688
|
}
|
|
633
689
|
|
|
690
|
+
// 记录指令调用日志(用户/平台/参数/耗时)
|
|
691
|
+
function logCmd(ctx, session, name, args, extra) {
|
|
692
|
+
try {
|
|
693
|
+
const logger = ctx.logger('dwrgbwiki')
|
|
694
|
+
const params = args && typeof args === 'object' ? JSON.stringify(args) : String(args || '')
|
|
695
|
+
const user = session && (session.username || session.userId || '未知')
|
|
696
|
+
const platform = session && session.platform || '?'
|
|
697
|
+
const info = ['指令', name, '| 用户', platform + ':' + user]
|
|
698
|
+
if (params && params !== '{}' && params !== '""') info.push('| 参数', params)
|
|
699
|
+
if (extra) info.push('|', extra)
|
|
700
|
+
logger.info(info.join(' '))
|
|
701
|
+
} catch (e) { /* 日志失败不影响主流程 */ }
|
|
702
|
+
}
|
|
703
|
+
|
|
634
704
|
function cmdWidth(config, key) {
|
|
635
705
|
const v = config[key]
|
|
636
706
|
return (v && v > 0) ? v : (config.width || 1300)
|
package/match.js
CHANGED
|
@@ -298,35 +298,35 @@ body { font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Microsoft YaHei'
|
|
|
298
298
|
.page { max-width:${width}px; margin:0 auto; }
|
|
299
299
|
.head { text-align:center; padding:22px 20px; border-radius:16px; margin-bottom:20px;
|
|
300
300
|
background:linear-gradient(135deg, #667eea 0%, #764ba2 100%); box-shadow:0 6px 24px rgba(0,0,0,.35); }
|
|
301
|
-
.player-id { font-size:
|
|
302
|
-
.player-team { font-size:
|
|
301
|
+
.player-id { font-size:34px; font-weight:800; color:#fff; letter-spacing:1px; }
|
|
302
|
+
.player-team { font-size:17px; color:rgba(255,255,255,.85); margin-top:8px; }
|
|
303
303
|
.role-tag { display:inline-flex; gap:10px; margin-top:12px; }
|
|
304
|
-
.role-tag span { font-size:
|
|
304
|
+
.role-tag span { font-size:15px; font-weight:700; padding:5px 18px; border-radius:20px;
|
|
305
305
|
border:2px solid rgba(255,255,255,.5); background:rgba(255,255,255,.2); color:#fff; }
|
|
306
306
|
.role-section { margin-bottom:22px; }
|
|
307
307
|
.career { background:rgba(22,27,34,.75); border:1px solid rgba(255,255,255,.09); border-radius:14px; padding:18px 20px; margin-bottom:14px; }
|
|
308
|
-
.career-head { font-size:
|
|
308
|
+
.career-head { font-size:23px; font-weight:800; color:#ffd76d; margin-bottom:14px; letter-spacing:1px; }
|
|
309
309
|
.stats-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(150px, 1fr)); gap:10px; }
|
|
310
310
|
.stat { background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.08); border-radius:10px; padding:10px 12px; text-align:center; }
|
|
311
|
-
.stat-label { font-size:
|
|
312
|
-
.stat-value { font-size:
|
|
311
|
+
.stat-label { font-size:13.5px; color:#8b949e; margin-bottom:5px; }
|
|
312
|
+
.stat-value { font-size:19px; font-weight:700; color:#fff; }
|
|
313
313
|
.stat-value.win { color:#3fb950; }
|
|
314
314
|
.chars { display:flex; flex-wrap:wrap; gap:7px; margin-top:13px; justify-content:center; }
|
|
315
|
-
.chip { font-size:
|
|
315
|
+
.chip { font-size:15px; color:#79c0ff; background:rgba(88,166,255,.1); border:1px solid rgba(88,166,255,.25); border-radius:999px; padding:3px 11px; }
|
|
316
316
|
.table-wrap { background:rgba(22,27,34,.75); border:1px solid rgba(255,255,255,.09); border-radius:14px; overflow:hidden; }
|
|
317
317
|
table { width:100%; border-collapse:collapse; }
|
|
318
|
-
thead th { background:rgba(139,148,158,.1); color:#c9d1d9; font-size:
|
|
319
|
-
tbody td { text-align:center; padding:8px 9px; font-size:
|
|
318
|
+
thead th { background:rgba(139,148,158,.1); color:#c9d1d9; font-size:15px; font-weight:700; padding:10px 9px; white-space:nowrap; }
|
|
319
|
+
tbody td { text-align:center; padding:8px 9px; font-size:15.5px; border-top:1px solid rgba(255,255,255,.06); color:#e6edf3; white-space:nowrap; }
|
|
320
320
|
tbody tr:hover { background:rgba(255,255,255,.03); }
|
|
321
321
|
td.sname { color:#79c0ff; font-weight:700; }
|
|
322
322
|
td.win { color:#3fb950; font-weight:700; }
|
|
323
323
|
td.draw { color:#d29922; }
|
|
324
324
|
td.loss { color:#f85149; }
|
|
325
325
|
.chars-inline { display:flex; flex-wrap:wrap; gap:5px; justify-content:center; }
|
|
326
|
-
.chip-sm { font-size:
|
|
326
|
+
.chip-sm { font-size:14px; color:#e6edf3; background:rgba(88,166,255,.08); border:1px solid rgba(88,166,255,.2); border-radius:6px; padding:2px 7px; white-space:nowrap; }
|
|
327
327
|
.chip-sm i { font-style:normal; color:#8b949e; margin-left:3px; }
|
|
328
328
|
.none { color:#8b949e; }
|
|
329
|
-
.foot { text-align:center; color:#8b949e; font-size:
|
|
329
|
+
.foot { text-align:center; color:#8b949e; font-size:14px; margin-top:16px; opacity:.75; }
|
|
330
330
|
</style>
|
|
331
331
|
</head>
|
|
332
332
|
<body>
|
|
@@ -742,30 +742,30 @@ body { font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','Microsoft YaHei'
|
|
|
742
742
|
.page { max-width:${width}px; margin:0 auto; }
|
|
743
743
|
.head { text-align:center; padding:20px; border-radius:16px; margin-bottom:20px;
|
|
744
744
|
background:linear-gradient(135deg, #667eea 0%, #764ba2 100%); box-shadow:0 6px 24px rgba(0,0,0,.35); }
|
|
745
|
-
.title { font-size:
|
|
746
|
-
.sub { font-size:
|
|
745
|
+
.title { font-size:32px; font-weight:800; color:#fff; letter-spacing:1px; }
|
|
746
|
+
.sub { font-size:16px; color:rgba(255,255,255,.85); margin-top:8px; }
|
|
747
747
|
.summary { background:rgba(22,27,34,.75); border:1px solid rgba(255,255,255,.09); border-radius:14px; padding:16px 20px; margin-bottom:16px; }
|
|
748
|
-
.summary-row { font-size:
|
|
748
|
+
.summary-row { font-size:17px; line-height:1.9; color:#c9d1d9; }
|
|
749
749
|
.summary-row b { color:#fff; }
|
|
750
750
|
.summary-row .cnt { color:#ffd76d; font-weight:700; margin:0 3px; }
|
|
751
751
|
.summary-row .date { color:#79c0ff; }
|
|
752
|
-
.warn { background:rgba(248,81,73,.1); border:1px solid rgba(248,81,73,.35); color:#f85149; font-size:
|
|
752
|
+
.warn { background:rgba(248,81,73,.1); border:1px solid rgba(248,81,73,.35); color:#f85149; font-size:16px;
|
|
753
753
|
border-radius:10px; padding:10px 16px; margin-bottom:14px; }
|
|
754
754
|
.item { background:rgba(22,27,34,.75); border:1px solid rgba(255,255,255,.09); border-radius:14px; padding:16px 20px; margin-bottom:14px; }
|
|
755
755
|
.item-head { display:flex; justify-content:space-between; align-items:flex-start; }
|
|
756
|
-
.item-info { font-size:
|
|
756
|
+
.item-info { font-size:17px; color:#c9d1d9; line-height:1.6; }
|
|
757
757
|
.item-info b { color:#fff; }
|
|
758
|
-
.item-result { font-size:
|
|
758
|
+
.item-result { font-size:22px; font-weight:800; padding:4px 18px; border-radius:10px; }
|
|
759
759
|
.item-result.win { color:#3fb950; background:rgba(63,185,80,.12); border:1px solid rgba(63,185,80,.35); }
|
|
760
760
|
.item-result.loss { color:#f85149; background:rgba(248,81,73,.12); border:1px solid rgba(248,81,73,.35); }
|
|
761
761
|
.item-result.draw { color:#d29922; background:rgba(210,153,34,.12); border:1px solid rgba(210,153,34,.35); }
|
|
762
|
-
.item-score { font-size:
|
|
762
|
+
.item-score { font-size:18px; font-weight:700; color:#fff; margin:10px 0 8px; }
|
|
763
763
|
.games { margin-top:8px; }
|
|
764
764
|
.game-tbl { width:100%; border-collapse:collapse; }
|
|
765
|
-
.game-tbl th { background:rgba(139,148,158,.1); color:#8b949e; font-size:
|
|
766
|
-
.game-tbl td { text-align:center; padding:6px 8px; font-size:
|
|
765
|
+
.game-tbl th { background:rgba(139,148,158,.1); color:#8b949e; font-size:14.5px; font-weight:700; padding:7px 8px; text-align:center; white-space:nowrap; }
|
|
766
|
+
.game-tbl td { text-align:center; padding:6px 8px; font-size:15px; border-top:1px solid rgba(255,255,255,.06); color:#e6edf3; white-space:nowrap; }
|
|
767
767
|
.none { color:#8b949e; }
|
|
768
|
-
.foot { text-align:center; color:#8b949e; font-size:
|
|
768
|
+
.foot { text-align:center; color:#8b949e; font-size:14px; margin-top:16px; opacity:.75; }
|
|
769
769
|
</style>
|
|
770
770
|
</head>
|
|
771
771
|
<body>
|
package/package.json
CHANGED