koishi-plugin-dew-bot 1.0.259 → 1.0.260

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/README.md CHANGED
@@ -1,10 +1,10 @@
1
- # 🌀 DEW · 无限轮回 RPG
2
-
3
- [![npm](https://img.shields.io/npm/v/koishi-plugin-dew-bot?style=flat-square&color=7c3aed)](https://www.npmjs.com/package/koishi-plugin-dew-bot)
4
- ![Koishi](https://img.shields.io/badge/Koishi-4.x-6366f1?style=flat-square)
5
-
6
- > **下一场轮回,主角是你。**
7
-
8
- **DEW Bot** 是一款基于《无限恐怖》小说改编的 **RPG 机器人**。
9
-
1
+ # 🌀 DEW · 无限轮回 RPG
2
+
3
+ [![npm](https://img.shields.io/npm/v/koishi-plugin-dew-bot?style=flat-square&color=7c3aed)](https://www.npmjs.com/package/koishi-plugin-dew-bot)
4
+ ![Koishi](https://img.shields.io/badge/Koishi-4.x-6366f1?style=flat-square)
5
+
6
+ > **下一场轮回,主角是你。**
7
+
8
+ **DEW Bot** 是一款基于《无限恐怖》小说改编的 **RPG 机器人**。
9
+
10
10
  踏入主神空间,成为轮回者,书写属于你的无限冒险。
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ import{defineComponent as E,inject as P,computed as l,ref as h,watch as T,resolveComponent as w,openBlock as m,createElementBlock as g,createElementVNode as t,normalizeClass as b,createTextVNode as d,toDisplayString as i,createVNode as A,unref as B,withCtx as L,createCommentVNode as k,h as _}from"vue";import{store as C,socket as v,send as j}from"@koishijs/client";const I={key:0,class:"dew-statistics","aria-label":"DEW 游戏统计"},O={class:"statistics-heading"},q={class:"statistics-actions"},F={key:0,class:"statistics-grid"},G={class:"stat-card stat-primary"},H={class:"stat-value"},J={class:"stat-card"},K={class:"stat-value"},Q={class:"server-summary"},R={class:"server-count"},U={key:0,class:"statistics-error"},X={class:"statistics-footer"},Y={class:"statistics-meta"},Z=E({__name:"statistics",setup(r){const p=P("plugin:name",void 0),f=l(()=>!p||p.value==="koishi-plugin-dew-bot"),u=h(false),c=h(""),n=l(()=>C.dewStatistics),o=l(()=>{var e;return c.value||((e=n.value)==null?void 0:e.error)||""}),a=l(()=>{var e;return v.value&&((e=n.value)!=null&&e.connected)&&!o.value?n.value.statistics:void 0}),x=l(()=>a.value?"is-connected":o.value?"is-error":"is-waiting"),N=l(()=>v.value?n.value&&!n.value.connected?"游戏服未连接":o.value?"统计不可用":n.value&&a.value?"已连接":"正在加载":"控制台已断开"),D=l(()=>v.value?n.value&&!n.value.connected?"等待机器人连接游戏服。":o.value?"暂时无法获取游戏统计。":"正在获取游戏统计……":"控制台连接已断开,重新连接后会恢复统计。"),W=l(()=>{var e;return Math.max(1,Math.round((((e=a.value)==null?void 0:e.onlineWindowMs)??3e5)/6e4))}),z=l(()=>a.value?new Date(a.value.generatedAt).toLocaleString("zh-CN",{hour12:false}):"");function y(e){return e.toLocaleString("zh-CN")}T(n,()=>{c.value=""});async function M(){if(!(u.value||!v.value)){u.value=true,c.value="";try{const e=await j("dew/statistics/refresh");if(!e)throw new Error("控制台连接已断开");C.dewStatistics=e}catch(e){c.value=typeof e=="string"?e:e instanceof Error?e.message:"获取失败,请稍后刷新重试。"}finally{u.value=false}}}return(e,s)=>{const V=w("el-button");return f.value?(m(),g("section",I,[t("div",O,[s[2]||(s[2]=t("div",null,[t("span",{class:"statistics-eyebrow"},"DEW · 主神空间"),t("h2",null,"游戏统计"),t("p",{class:"statistics-subtitle"},"每一位轮回者,都在书写新的冒险")],-1)),t("div",q,[t("span",{class:b(["connection-status",x.value]),role:"status"},[s[0]||(s[0]=t("span",{class:"status-dot","aria-hidden":"true"},null,-1)),d(i(N.value),1)],2),A(V,{size:"small",loading:u.value,disabled:!B(v),onClick:M},{default:L(()=>[...s[1]||(s[1]=[d(" 刷新 ",-1)])]),_:1},8,["loading","disabled"])])]),a.value?(m(),g("div",F,[t("div",G,[s[4]||(s[4]=t("span",{class:"stat-label"},"在线玩家",-1)),t("strong",H,[d(i(y(a.value.onlinePlayers)),1),s[3]||(s[3]=t("span",{class:"stat-unit"},"位",-1))]),s[5]||(s[5]=t("span",{class:"stat-detail"},"当前活跃的轮回者",-1))]),t("div",J,[s[7]||(s[7]=t("span",{class:"stat-label"},"注册玩家",-1)),t("strong",K,[d(i(y(a.value.registeredPlayers)),1),s[6]||(s[6]=t("span",{class:"stat-unit"},"位",-1))]),s[8]||(s[8]=t("span",{class:"stat-detail"},"已踏入主神空间的角色",-1))]),t("div",Q,[s[10]||(s[10]=t("span",{class:"server-label"},[t("span",{class:"server-dot","aria-hidden":"true"}),d("接入服务器")],-1)),t("span",R,[t("strong",null,i(y(a.value.connectedServers)),1),s[9]||(s[9]=d(" 台",-1))])])])):(m(),g("div",{key:1,class:b(["statistics-empty",{"has-error":!!o.value}]),role:"status"},[t("p",null,i(D.value),1),o.value?(m(),g("p",U,i(o.value),1)):k("v-if",true)],2)),t("div",X,[t("p",null,"最近 "+i(W.value)+" 分钟有游戏活动,或仍在进行游戏任务的角色,计入在线。",1),t("div",Y,[t("span",null,i(a.value?"统计时间:"+z.value:"等待最新统计"),1),s[11]||(s[11]=t("span",null,"每 15 秒自动刷新",-1))])])])):k("v-if",true)}}}),$=(r,p)=>{const f=r.__vccOpts||r;for(const[u,c]of p)f[u]=c;return f},S=$(Z,[["__scopeId","data-v-2817e989"]]),tt=E({setup(){return()=>_(w("k-layout"),null,{header:()=>"DEW 游戏统计",default:()=>_(w("k-content"),null,{default:()=>_(S)})})}}),at=r=>{r.slot({type:"plugin-details",component:S,order:-400}),r.page({path:"/dew-statistics",name:"DEW 游戏统计",desc:"查看在线玩家和游戏角色统计",component:tt,authority:4,fields:["dewStatistics"]})};export{at as default};
package/dist/style.css ADDED
@@ -0,0 +1 @@
1
+ .dew-statistics[data-v-2817e989]{position:relative;margin:1.5rem 0;padding:1.5rem;border:1px solid var(--k-color-divider);border-radius:.9rem;background:linear-gradient(135deg,rgba(118,87,238,.1),transparent 60%),linear-gradient(315deg,rgba(38,188,200,.08),transparent 55%),var(--bg1);color:var(--fg1);overflow:hidden}.dew-statistics[data-v-2817e989]:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:linear-gradient(90deg,#8974ee,#48c2cf)}.statistics-heading[data-v-2817e989],.statistics-actions[data-v-2817e989],.statistics-meta[data-v-2817e989]{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem}.statistics-heading[data-v-2817e989]{justify-content:space-between;margin-bottom:1.25rem}.statistics-eyebrow[data-v-2817e989]{display:block;margin-bottom:.4rem;color:var(--k-color-primary);font-size:.6875rem;font-weight:600;letter-spacing:.12em}.statistics-heading h2[data-v-2817e989]{margin:0;font-size:1.25rem}.statistics-subtitle[data-v-2817e989]{margin:.35rem 0 0;color:var(--fg2);font-size:.8125rem}.connection-status[data-v-2817e989]{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .6rem;border:1px solid var(--k-color-divider);border-radius:2rem;background:var(--bg1);color:var(--fg2);font-size:.75rem}.status-dot[data-v-2817e989]{width:.4rem;height:.4rem;border-radius:50%;background:var(--k-color-warning)}.is-connected .status-dot[data-v-2817e989]{background:var(--k-color-success)}.is-error .status-dot[data-v-2817e989]{background:var(--k-color-danger)}.statistics-grid[data-v-2817e989]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.stat-card[data-v-2817e989]{display:flex;flex-direction:column;gap:.6rem;padding:1.25rem;border:1px solid var(--k-color-divider);border-radius:.65rem;background:var(--k-card-bg)}.stat-primary[data-v-2817e989]{border-color:var(--k-color-primary);background:var(--k-color-primary-fade)}.stat-label[data-v-2817e989]{font-size:.9375rem;font-weight:500;color:var(--fg2)}.stat-value[data-v-2817e989]{font-size:clamp(2.25rem,4vw,3.5rem);font-weight:700;line-height:1.15;letter-spacing:-.04em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.stat-unit[data-v-2817e989]{margin-left:.5rem;color:var(--fg2);font-size:.8125rem;font-weight:400;letter-spacing:normal}.stat-primary .stat-value[data-v-2817e989]{color:var(--k-color-primary)}.stat-detail[data-v-2817e989]{font-size:.75rem;color:var(--fg2);line-height:1.6}.server-summary[data-v-2817e989]{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 1.25rem;border:1px solid var(--k-color-divider);border-radius:.65rem;background:var(--k-card-bg)}.server-label[data-v-2817e989]{display:inline-flex;align-items:center;gap:.55rem;color:var(--fg2);font-size:.875rem}.server-dot[data-v-2817e989]{width:.45rem;height:.45rem;border-radius:50%;background:#48c2cf;box-shadow:0 0 0 4px #48c2cf1a}.server-count[data-v-2817e989]{white-space:nowrap;color:var(--fg2);font-size:.8125rem}.server-count strong[data-v-2817e989]{color:var(--fg1);font-size:1.5rem;font-variant-numeric:tabular-nums}.statistics-empty[data-v-2817e989]{padding:1.5rem 1rem;border:1px dashed var(--k-color-divider);border-radius:.65rem;background:var(--k-card-bg);color:var(--fg2);text-align:center}.statistics-empty p[data-v-2817e989]{margin:0;line-height:1.7}.statistics-empty.has-error[data-v-2817e989]{border-color:var(--k-color-danger)}.statistics-error[data-v-2817e989]{color:var(--k-color-danger);font-size:.8125rem;overflow-wrap:anywhere}.statistics-footer[data-v-2817e989]{margin-top:1rem;color:var(--fg2);font-size:.75rem;line-height:1.7}.statistics-footer p[data-v-2817e989]{margin:0}.statistics-meta[data-v-2817e989]{justify-content:space-between;margin-top:.35rem;gap:.25rem .75rem}@media (max-width: 600px){.dew-statistics[data-v-2817e989],.stat-card[data-v-2817e989]{padding:1rem}}@media (max-width: 420px){.statistics-grid[data-v-2817e989]{grid-template-columns:minmax(0,1fr)}.statistics-heading[data-v-2817e989]{align-items:flex-start}}