@zhin.js/plugin-60s 1.1.0 → 1.1.2

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.
Files changed (171) hide show
  1. package/README.md +2 -0
  2. package/commands/{60s.js → 60s/index.js} +3 -2
  3. package/commands/60s/index.ts +8 -0
  4. package/commands/{bing.js → bing/index.js} +3 -2
  5. package/commands/bing/index.ts +8 -0
  6. package/commands/douyin/{[[limit]].js → [[limit]]/index.js} +3 -2
  7. package/commands/douyin/[[limit]]/index.ts +9 -0
  8. package/commands/{duanzi.js → duanzi/index.js} +3 -2
  9. package/commands/duanzi/index.ts +8 -0
  10. package/commands/{exchange.js → exchange/index.js} +3 -2
  11. package/commands/{exchange.ts → exchange/index.ts} +3 -2
  12. package/commands/fanyi/[text]/index.js +9 -0
  13. package/commands/fanyi/[text]/index.ts +9 -0
  14. package/commands/fuel/[province]/index.js +9 -0
  15. package/commands/fuel/[province]/index.ts +9 -0
  16. package/commands/{gold.js → gold/index.js} +3 -2
  17. package/commands/gold/index.ts +8 -0
  18. package/commands/{history.js → history/index.js} +3 -2
  19. package/commands/history/index.ts +8 -0
  20. package/commands/hitokoto/[type]/index.js +9 -0
  21. package/commands/hitokoto/[type]/index.ts +9 -0
  22. package/commands/ip/[ip]/index.js +9 -0
  23. package/commands/ip/[ip]/index.ts +9 -0
  24. package/commands/{kfc.js → kfc/index.js} +3 -2
  25. package/commands/kfc/index.ts +8 -0
  26. package/commands/{moyu.js → moyu/index.js} +3 -2
  27. package/commands/moyu/index.ts +8 -0
  28. package/commands/toutiao/{[[limit]].js → [[limit]]/index.js} +3 -2
  29. package/commands/toutiao/[[limit]]/index.ts +9 -0
  30. package/commands/weather/{[city].js → [city]/index.js} +3 -2
  31. package/commands/weather/[city]/index.ts +9 -0
  32. package/commands/weibo/{[[limit]].js → [[limit]]/index.js} +3 -2
  33. package/commands/weibo/[[limit]]/index.ts +9 -0
  34. package/commands/zhihu/{[[limit]].js → [[limit]]/index.js} +3 -2
  35. package/commands/zhihu/[[limit]]/index.ts +9 -0
  36. package/lib/api.js +0 -32
  37. package/lib/api.js.map +1 -1
  38. package/lib/client.js +42 -0
  39. package/lib/client.js.map +1 -0
  40. package/lib/handlers/60s-news.js +2 -3
  41. package/lib/handlers/60s-news.js.map +1 -1
  42. package/lib/handlers/bing-image.js +3 -3
  43. package/lib/handlers/bing-image.js.map +1 -1
  44. package/lib/handlers/douyin-hot.js +3 -3
  45. package/lib/handlers/douyin-hot.js.map +1 -1
  46. package/lib/handlers/duanzi.js +2 -3
  47. package/lib/handlers/duanzi.js.map +1 -1
  48. package/lib/handlers/exchange-rate.js +3 -3
  49. package/lib/handlers/exchange-rate.js.map +1 -1
  50. package/lib/handlers/fuel-price.js +3 -3
  51. package/lib/handlers/fuel-price.js.map +1 -1
  52. package/lib/handlers/gold-price.js +3 -3
  53. package/lib/handlers/gold-price.js.map +1 -1
  54. package/lib/handlers/history-today.js +3 -3
  55. package/lib/handlers/history-today.js.map +1 -1
  56. package/lib/handlers/hitokoto.js +2 -3
  57. package/lib/handlers/hitokoto.js.map +1 -1
  58. package/lib/handlers/ip-query.js +2 -3
  59. package/lib/handlers/ip-query.js.map +1 -1
  60. package/lib/handlers/kfc.js +2 -3
  61. package/lib/handlers/kfc.js.map +1 -1
  62. package/lib/handlers/moyu.js +3 -3
  63. package/lib/handlers/moyu.js.map +1 -1
  64. package/lib/handlers/toutiao-hot.js +3 -3
  65. package/lib/handlers/toutiao-hot.js.map +1 -1
  66. package/lib/handlers/translate.js +3 -3
  67. package/lib/handlers/translate.js.map +1 -1
  68. package/lib/handlers/weather.js +3 -3
  69. package/lib/handlers/weather.js.map +1 -1
  70. package/lib/handlers/weibo-hot.js +3 -3
  71. package/lib/handlers/weibo-hot.js.map +1 -1
  72. package/lib/handlers/zhihu-hot.js +3 -3
  73. package/lib/handlers/zhihu-hot.js.map +1 -1
  74. package/lib/index.js +1 -1
  75. package/lib/index.js.map +1 -1
  76. package/package.json +12 -11
  77. package/plugin.js +2 -3
  78. package/skills/60s-life/SKILL.md +22 -0
  79. package/skills/60s-life/tools/duanzi/index.js +14 -0
  80. package/skills/60s-life/tools/duanzi/index.ts +14 -0
  81. package/skills/60s-life/tools/history_today/index.js +14 -0
  82. package/skills/60s-life/tools/history_today/index.ts +14 -0
  83. package/skills/60s-life/tools/hitokoto/index.js +14 -0
  84. package/{agent/tools/hitokoto.ts → skills/60s-life/tools/hitokoto/index.ts} +5 -4
  85. package/skills/60s-life/tools/kfc/index.js +14 -0
  86. package/skills/60s-life/tools/kfc/index.ts +14 -0
  87. package/skills/60s-life/tools/moyu/index.js +14 -0
  88. package/skills/60s-life/tools/moyu/index.ts +14 -0
  89. package/skills/60s-life/tools/weather/index.js +14 -0
  90. package/{agent/tools/weather.ts → skills/60s-life/tools/weather/index.ts} +5 -4
  91. package/skills/60s-market/SKILL.md +17 -0
  92. package/skills/60s-market/tools/exchange_rate/index.js +14 -0
  93. package/{agent/tools/exchange_rate.ts → skills/60s-market/tools/exchange_rate/index.ts} +5 -4
  94. package/skills/60s-market/tools/fuel_price/index.js +14 -0
  95. package/skills/60s-market/tools/fuel_price/index.ts +14 -0
  96. package/skills/60s-market/tools/gold_price/index.js +14 -0
  97. package/skills/60s-market/tools/gold_price/index.ts +14 -0
  98. package/skills/60s-media/SKILL.md +14 -0
  99. package/skills/60s-media/tools/bing_image/index.js +14 -0
  100. package/skills/60s-media/tools/bing_image/index.ts +14 -0
  101. package/skills/60s-news/SKILL.md +21 -0
  102. package/skills/60s-news/tools/60s_news/index.js +14 -0
  103. package/{agent/tools/60s_news.ts → skills/60s-news/tools/60s_news/index.ts} +5 -4
  104. package/skills/60s-news/tools/douyin_hot/index.js +14 -0
  105. package/skills/60s-news/tools/douyin_hot/index.ts +14 -0
  106. package/skills/60s-news/tools/toutiao_hot/index.js +14 -0
  107. package/{agent/tools/toutiao_hot.ts → skills/60s-news/tools/toutiao_hot/index.ts} +5 -4
  108. package/skills/60s-news/tools/weibo_hot/index.js +14 -0
  109. package/skills/60s-news/tools/weibo_hot/index.ts +14 -0
  110. package/skills/60s-news/tools/zhihu_hot/index.js +14 -0
  111. package/skills/60s-news/tools/zhihu_hot/index.ts +14 -0
  112. package/skills/60s-utility/SKILL.md +15 -0
  113. package/skills/60s-utility/tools/ip_query/index.js +14 -0
  114. package/skills/60s-utility/tools/ip_query/index.ts +14 -0
  115. package/skills/60s-utility/tools/translate_60s/index.js +14 -0
  116. package/{agent/tools/translate_60s.ts → skills/60s-utility/tools/translate_60s/index.ts} +5 -4
  117. package/src/api.ts +1 -46
  118. package/src/client.ts +62 -0
  119. package/src/handlers/60s-news.ts +3 -3
  120. package/src/handlers/bing-image.ts +4 -3
  121. package/src/handlers/douyin-hot.ts +4 -3
  122. package/src/handlers/duanzi.ts +3 -3
  123. package/src/handlers/exchange-rate.ts +4 -3
  124. package/src/handlers/fuel-price.ts +4 -3
  125. package/src/handlers/gold-price.ts +4 -3
  126. package/src/handlers/history-today.ts +4 -3
  127. package/src/handlers/hitokoto.ts +3 -3
  128. package/src/handlers/ip-query.ts +3 -3
  129. package/src/handlers/kfc.ts +3 -3
  130. package/src/handlers/moyu.ts +4 -3
  131. package/src/handlers/toutiao-hot.ts +4 -3
  132. package/src/handlers/translate.ts +4 -3
  133. package/src/handlers/weather.ts +4 -3
  134. package/src/handlers/weibo-hot.ts +4 -3
  135. package/src/handlers/zhihu-hot.ts +4 -3
  136. package/src/index.ts +0 -1
  137. package/agent/skills/60s.md +0 -91
  138. package/agent/tools/bing_image.ts +0 -13
  139. package/agent/tools/douyin_hot.ts +0 -13
  140. package/agent/tools/duanzi.ts +0 -13
  141. package/agent/tools/fuel_price.ts +0 -13
  142. package/agent/tools/gold_price.ts +0 -13
  143. package/agent/tools/history_today.ts +0 -13
  144. package/agent/tools/ip_query.ts +0 -13
  145. package/agent/tools/kfc.ts +0 -13
  146. package/agent/tools/moyu.ts +0 -13
  147. package/agent/tools/weibo_hot.ts +0 -13
  148. package/agent/tools/zhihu_hot.ts +0 -13
  149. package/commands/60s.ts +0 -7
  150. package/commands/bing.ts +0 -7
  151. package/commands/douyin/[[limit]].ts +0 -8
  152. package/commands/duanzi.ts +0 -7
  153. package/commands/fanyi/[text].js +0 -8
  154. package/commands/fanyi/[text].ts +0 -8
  155. package/commands/fuel/[province].js +0 -8
  156. package/commands/fuel/[province].ts +0 -8
  157. package/commands/gold.ts +0 -7
  158. package/commands/history.ts +0 -7
  159. package/commands/hitokoto/[type].js +0 -8
  160. package/commands/hitokoto/[type].ts +0 -8
  161. package/commands/ip/[ip].js +0 -8
  162. package/commands/ip/[ip].ts +0 -8
  163. package/commands/kfc.ts +0 -7
  164. package/commands/moyu.ts +0 -7
  165. package/commands/toutiao/[[limit]].ts +0 -8
  166. package/commands/weather/[city].ts +0 -8
  167. package/commands/weibo/[[limit]].ts +0 -8
  168. package/commands/zhihu/[[limit]].ts +0 -8
  169. package/lib/runtime-deps.js +0 -22
  170. package/lib/runtime-deps.js.map +0 -1
  171. package/src/runtime-deps.ts +0 -26
package/README.md CHANGED
@@ -22,6 +22,8 @@ plugins:
22
22
  apiBase: https://60s.viki.moe # 可选,默认官方地址
23
23
  ```
24
24
 
25
+ 每个插件实例拥有独立的 API Client。配置更新由当前 generation 的 Client 即时读取,多个实例不会共享或覆盖运行时地址。
26
+
25
27
  ## 功能列表
26
28
 
27
29
  | 命令 | 别名 | 说明 |
@@ -1,7 +1,8 @@
1
1
  // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
2
  import { defineCommand } from 'zhin.js/command';
3
- import handler from "../lib/handlers/60s-news.js";
3
+ import { sixtySClientToken } from "../../lib/client.js";
4
+ import handler from "../../lib/handlers/60s-news.js";
4
5
  export default defineCommand({
5
6
  description: '每日60秒新闻',
6
- execute: () => handler(),
7
+ execute: ({ use }) => handler(use(sixtySClientToken)),
7
8
  });
@@ -0,0 +1,8 @@
1
+ import { defineCommand } from 'zhin.js/command';
2
+ import { sixtySClientToken } from '../../src/client.js';
3
+ import handler from '../../src/handlers/60s-news.js';
4
+
5
+ export default defineCommand({
6
+ description: '每日60秒新闻',
7
+ execute: ({ use }) => handler(use(sixtySClientToken)),
8
+ });
@@ -1,7 +1,8 @@
1
1
  // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
2
  import { defineCommand } from 'zhin.js/command';
3
- import handler from "../lib/handlers/bing-image.js";
3
+ import { sixtySClientToken } from "../../lib/client.js";
4
+ import handler from "../../lib/handlers/bing-image.js";
4
5
  export default defineCommand({
5
6
  description: 'Bing 每日壁纸',
6
- execute: () => handler(),
7
+ execute: ({ use }) => handler(use(sixtySClientToken)),
7
8
  });
@@ -0,0 +1,8 @@
1
+ import { defineCommand } from 'zhin.js/command';
2
+ import { sixtySClientToken } from '../../src/client.js';
3
+ import handler from '../../src/handlers/bing-image.js';
4
+
5
+ export default defineCommand({
6
+ description: 'Bing 每日壁纸',
7
+ execute: ({ use }) => handler(use(sixtySClientToken)),
8
+ });
@@ -1,8 +1,9 @@
1
1
  // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
2
  import { defineCommand } from 'zhin.js/command';
3
- import handler from "../../lib/handlers/douyin-hot.js";
3
+ import { sixtySClientToken } from "../../../lib/client.js";
4
+ import handler from "../../../lib/handlers/douyin-hot.js";
4
5
  export default defineCommand({
5
6
  description: '抖音热搜',
6
7
  params: { limit: { type: 'number', default: 10 } },
7
- execute: ({ params }) => handler({ limit: Number(params.limit) }),
8
+ execute: ({ params, use }) => handler(use(sixtySClientToken), { limit: Number(params.limit) }),
8
9
  });
@@ -0,0 +1,9 @@
1
+ import { defineCommand } from 'zhin.js/command';
2
+ import { sixtySClientToken } from '../../../src/client.js';
3
+ import handler from '../../../src/handlers/douyin-hot.js';
4
+
5
+ export default defineCommand({
6
+ description: '抖音热搜',
7
+ params: { limit: { type: 'number', default: 10 } },
8
+ execute: ({ params, use }) => handler(use(sixtySClientToken), { limit: Number(params.limit) }),
9
+ });
@@ -1,7 +1,8 @@
1
1
  // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
2
  import { defineCommand } from 'zhin.js/command';
3
- import handler from "../lib/handlers/duanzi.js";
3
+ import { sixtySClientToken } from "../../lib/client.js";
4
+ import handler from "../../lib/handlers/duanzi.js";
4
5
  export default defineCommand({
5
6
  description: '随机段子',
6
- execute: () => handler(),
7
+ execute: ({ use }) => handler(use(sixtySClientToken)),
7
8
  });
@@ -0,0 +1,8 @@
1
+ import { defineCommand } from 'zhin.js/command';
2
+ import { sixtySClientToken } from '../../src/client.js';
3
+ import handler from '../../src/handlers/duanzi.js';
4
+
5
+ export default defineCommand({
6
+ description: '随机段子',
7
+ execute: ({ use }) => handler(use(sixtySClientToken)),
8
+ });
@@ -1,9 +1,10 @@
1
1
  // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
2
  import { defineCommand } from 'zhin.js/command';
3
- import handler from "../lib/handlers/exchange-rate.js";
3
+ import { sixtySClientToken } from "../../lib/client.js";
4
+ import handler from "../../lib/handlers/exchange-rate.js";
4
5
  export default defineCommand({
5
6
  description: '货币汇率',
6
- execute: ({ args }) => handler({
7
+ execute: ({ args, use }) => handler(use(sixtySClientToken), {
7
8
  from: args[0] != null ? String(args[0]) : undefined,
8
9
  to: args[1] != null ? String(args[1]) : undefined,
9
10
  }),
@@ -1,9 +1,10 @@
1
1
  import { defineCommand } from 'zhin.js/command';
2
- import handler from '../src/handlers/exchange-rate.js';
2
+ import { sixtySClientToken } from '../../src/client.js';
3
+ import handler from '../../src/handlers/exchange-rate.js';
3
4
 
4
5
  export default defineCommand({
5
6
  description: '货币汇率',
6
- execute: ({ args }) => handler({
7
+ execute: ({ args, use }) => handler(use(sixtySClientToken), {
7
8
  from: args[0] != null ? String(args[0]) : undefined,
8
9
  to: args[1] != null ? String(args[1]) : undefined,
9
10
  }),
@@ -0,0 +1,9 @@
1
+ // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
+ import { defineCommand } from 'zhin.js/command';
3
+ import { sixtySClientToken } from "../../../lib/client.js";
4
+ import handler from "../../../lib/handlers/translate.js";
5
+ export default defineCommand({
6
+ description: '文本翻译',
7
+ params: { text: { type: 'string' } },
8
+ execute: ({ params, args, use }) => handler(use(sixtySClientToken), { text: String(params.text), to: args[0] != null ? String(args[0]) : undefined }),
9
+ });
@@ -0,0 +1,9 @@
1
+ import { defineCommand } from 'zhin.js/command';
2
+ import { sixtySClientToken } from '../../../src/client.js';
3
+ import handler from '../../../src/handlers/translate.js';
4
+
5
+ export default defineCommand({
6
+ description: '文本翻译',
7
+ params: { text: { type: 'string' } },
8
+ execute: ({ params, args, use }) => handler(use(sixtySClientToken), { text: String(params.text), to: args[0] != null ? String(args[0]) : undefined }),
9
+ });
@@ -0,0 +1,9 @@
1
+ // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
+ import { defineCommand } from 'zhin.js/command';
3
+ import { sixtySClientToken } from "../../../lib/client.js";
4
+ import handler from "../../../lib/handlers/fuel-price.js";
5
+ export default defineCommand({
6
+ description: '今日油价',
7
+ params: { province: { type: 'string' } },
8
+ execute: ({ params, use }) => handler(use(sixtySClientToken), { province: params.province != null ? String(params.province) : undefined }),
9
+ });
@@ -0,0 +1,9 @@
1
+ import { defineCommand } from 'zhin.js/command';
2
+ import { sixtySClientToken } from '../../../src/client.js';
3
+ import handler from '../../../src/handlers/fuel-price.js';
4
+
5
+ export default defineCommand({
6
+ description: '今日油价',
7
+ params: { province: { type: 'string' } },
8
+ execute: ({ params, use }) => handler(use(sixtySClientToken), { province: params.province != null ? String(params.province) : undefined }),
9
+ });
@@ -1,7 +1,8 @@
1
1
  // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
2
  import { defineCommand } from 'zhin.js/command';
3
- import handler from "../lib/handlers/gold-price.js";
3
+ import { sixtySClientToken } from "../../lib/client.js";
4
+ import handler from "../../lib/handlers/gold-price.js";
4
5
  export default defineCommand({
5
6
  description: '今日金价',
6
- execute: () => handler(),
7
+ execute: ({ use }) => handler(use(sixtySClientToken)),
7
8
  });
@@ -0,0 +1,8 @@
1
+ import { defineCommand } from 'zhin.js/command';
2
+ import { sixtySClientToken } from '../../src/client.js';
3
+ import handler from '../../src/handlers/gold-price.js';
4
+
5
+ export default defineCommand({
6
+ description: '今日金价',
7
+ execute: ({ use }) => handler(use(sixtySClientToken)),
8
+ });
@@ -1,7 +1,8 @@
1
1
  // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
2
  import { defineCommand } from 'zhin.js/command';
3
- import handler from "../lib/handlers/history-today.js";
3
+ import { sixtySClientToken } from "../../lib/client.js";
4
+ import handler from "../../lib/handlers/history-today.js";
4
5
  export default defineCommand({
5
6
  description: '历史上的今天',
6
- execute: () => handler(),
7
+ execute: ({ use }) => handler(use(sixtySClientToken)),
7
8
  });
@@ -0,0 +1,8 @@
1
+ import { defineCommand } from 'zhin.js/command';
2
+ import { sixtySClientToken } from '../../src/client.js';
3
+ import handler from '../../src/handlers/history-today.js';
4
+
5
+ export default defineCommand({
6
+ description: '历史上的今天',
7
+ execute: ({ use }) => handler(use(sixtySClientToken)),
8
+ });
@@ -0,0 +1,9 @@
1
+ // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
+ import { defineCommand } from 'zhin.js/command';
3
+ import { sixtySClientToken } from "../../../lib/client.js";
4
+ import handler from "../../../lib/handlers/hitokoto.js";
5
+ export default defineCommand({
6
+ description: '随机一言',
7
+ params: { type: { type: 'string' } },
8
+ execute: ({ params, use }) => handler(use(sixtySClientToken), { type: params.type != null ? String(params.type) : undefined }),
9
+ });
@@ -0,0 +1,9 @@
1
+ import { defineCommand } from 'zhin.js/command';
2
+ import { sixtySClientToken } from '../../../src/client.js';
3
+ import handler from '../../../src/handlers/hitokoto.js';
4
+
5
+ export default defineCommand({
6
+ description: '随机一言',
7
+ params: { type: { type: 'string' } },
8
+ execute: ({ params, use }) => handler(use(sixtySClientToken), { type: params.type != null ? String(params.type) : undefined }),
9
+ });
@@ -0,0 +1,9 @@
1
+ // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
+ import { defineCommand } from 'zhin.js/command';
3
+ import { sixtySClientToken } from "../../../lib/client.js";
4
+ import handler from "../../../lib/handlers/ip-query.js";
5
+ export default defineCommand({
6
+ description: 'IP 查询',
7
+ params: { ip: { type: 'string' } },
8
+ execute: ({ params, use }) => handler(use(sixtySClientToken), { ip: params.ip != null ? String(params.ip) : undefined }),
9
+ });
@@ -0,0 +1,9 @@
1
+ import { defineCommand } from 'zhin.js/command';
2
+ import { sixtySClientToken } from '../../../src/client.js';
3
+ import handler from '../../../src/handlers/ip-query.js';
4
+
5
+ export default defineCommand({
6
+ description: 'IP 查询',
7
+ params: { ip: { type: 'string' } },
8
+ execute: ({ params, use }) => handler(use(sixtySClientToken), { ip: params.ip != null ? String(params.ip) : undefined }),
9
+ });
@@ -1,7 +1,8 @@
1
1
  // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
2
  import { defineCommand } from 'zhin.js/command';
3
- import handler from "../lib/handlers/kfc.js";
3
+ import { sixtySClientToken } from "../../lib/client.js";
4
+ import handler from "../../lib/handlers/kfc.js";
4
5
  export default defineCommand({
5
6
  description: 'KFC 文案',
6
- execute: () => handler(),
7
+ execute: ({ use }) => handler(use(sixtySClientToken)),
7
8
  });
@@ -0,0 +1,8 @@
1
+ import { defineCommand } from 'zhin.js/command';
2
+ import { sixtySClientToken } from '../../src/client.js';
3
+ import handler from '../../src/handlers/kfc.js';
4
+
5
+ export default defineCommand({
6
+ description: 'KFC 文案',
7
+ execute: ({ use }) => handler(use(sixtySClientToken)),
8
+ });
@@ -1,7 +1,8 @@
1
1
  // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
2
  import { defineCommand } from 'zhin.js/command';
3
- import handler from "../lib/handlers/moyu.js";
3
+ import { sixtySClientToken } from "../../lib/client.js";
4
+ import handler from "../../lib/handlers/moyu.js";
4
5
  export default defineCommand({
5
6
  description: '摸鱼日历',
6
- execute: () => handler(),
7
+ execute: ({ use }) => handler(use(sixtySClientToken)),
7
8
  });
@@ -0,0 +1,8 @@
1
+ import { defineCommand } from 'zhin.js/command';
2
+ import { sixtySClientToken } from '../../src/client.js';
3
+ import handler from '../../src/handlers/moyu.js';
4
+
5
+ export default defineCommand({
6
+ description: '摸鱼日历',
7
+ execute: ({ use }) => handler(use(sixtySClientToken)),
8
+ });
@@ -1,8 +1,9 @@
1
1
  // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
2
  import { defineCommand } from 'zhin.js/command';
3
- import handler from "../../lib/handlers/toutiao-hot.js";
3
+ import { sixtySClientToken } from "../../../lib/client.js";
4
+ import handler from "../../../lib/handlers/toutiao-hot.js";
4
5
  export default defineCommand({
5
6
  description: '头条热搜',
6
7
  params: { limit: { type: 'number', default: 10 } },
7
- execute: ({ params }) => handler({ limit: Number(params.limit) }),
8
+ execute: ({ params, use }) => handler(use(sixtySClientToken), { limit: Number(params.limit) }),
8
9
  });
@@ -0,0 +1,9 @@
1
+ import { defineCommand } from 'zhin.js/command';
2
+ import { sixtySClientToken } from '../../../src/client.js';
3
+ import handler from '../../../src/handlers/toutiao-hot.js';
4
+
5
+ export default defineCommand({
6
+ description: '头条热搜',
7
+ params: { limit: { type: 'number', default: 10 } },
8
+ execute: ({ params, use }) => handler(use(sixtySClientToken), { limit: Number(params.limit) }),
9
+ });
@@ -1,8 +1,9 @@
1
1
  // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
2
  import { defineCommand } from 'zhin.js/command';
3
- import handler from "../../lib/handlers/weather.js";
3
+ import { sixtySClientToken } from "../../../lib/client.js";
4
+ import handler from "../../../lib/handlers/weather.js";
4
5
  export default defineCommand({
5
6
  description: '查询城市天气',
6
7
  params: { city: { type: 'string' } },
7
- execute: ({ params }) => handler({ city: String(params.city) }),
8
+ execute: ({ params, use }) => handler(use(sixtySClientToken), { city: String(params.city) }),
8
9
  });
@@ -0,0 +1,9 @@
1
+ import { defineCommand } from 'zhin.js/command';
2
+ import { sixtySClientToken } from '../../../src/client.js';
3
+ import handler from '../../../src/handlers/weather.js';
4
+
5
+ export default defineCommand({
6
+ description: '查询城市天气',
7
+ params: { city: { type: 'string' } },
8
+ execute: ({ params, use }) => handler(use(sixtySClientToken), { city: String(params.city) }),
9
+ });
@@ -1,8 +1,9 @@
1
1
  // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
2
  import { defineCommand } from 'zhin.js/command';
3
- import handler from "../../lib/handlers/weibo-hot.js";
3
+ import { sixtySClientToken } from "../../../lib/client.js";
4
+ import handler from "../../../lib/handlers/weibo-hot.js";
4
5
  export default defineCommand({
5
6
  description: '微博热搜',
6
7
  params: { limit: { type: 'number', default: 10 } },
7
- execute: ({ params }) => handler({ limit: Number(params.limit) }),
8
+ execute: ({ params, use }) => handler(use(sixtySClientToken), { limit: Number(params.limit) }),
8
9
  });
@@ -0,0 +1,9 @@
1
+ import { defineCommand } from 'zhin.js/command';
2
+ import { sixtySClientToken } from '../../../src/client.js';
3
+ import handler from '../../../src/handlers/weibo-hot.js';
4
+
5
+ export default defineCommand({
6
+ description: '微博热搜',
7
+ params: { limit: { type: 'number', default: 10 } },
8
+ execute: ({ params, use }) => handler(use(sixtySClientToken), { limit: Number(params.limit) }),
9
+ });
@@ -1,8 +1,9 @@
1
1
  // Generated by build-plugin-runtime-entries.mjs. Do not edit.
2
2
  import { defineCommand } from 'zhin.js/command';
3
- import handler from "../../lib/handlers/zhihu-hot.js";
3
+ import { sixtySClientToken } from "../../../lib/client.js";
4
+ import handler from "../../../lib/handlers/zhihu-hot.js";
4
5
  export default defineCommand({
5
6
  description: '知乎热榜',
6
7
  params: { limit: { type: 'number', default: 10 } },
7
- execute: ({ params }) => handler({ limit: Number(params.limit) }),
8
+ execute: ({ params, use }) => handler(use(sixtySClientToken), { limit: Number(params.limit) }),
8
9
  });
@@ -0,0 +1,9 @@
1
+ import { defineCommand } from 'zhin.js/command';
2
+ import { sixtySClientToken } from '../../../src/client.js';
3
+ import handler from '../../../src/handlers/zhihu-hot.js';
4
+
5
+ export default defineCommand({
6
+ description: '知乎热榜',
7
+ params: { limit: { type: 'number', default: 10 } },
8
+ execute: ({ params, use }) => handler(use(sixtySClientToken), { limit: Number(params.limit) }),
9
+ });
package/lib/api.js CHANGED
@@ -1,35 +1,3 @@
1
- /**
2
- * 60s API 共享模块 — 供 *.tool.md handler 使用
3
- */
4
- import { resolveApiBase } from './runtime-deps.js';
5
- export async function fetchApi(endpoint, params) {
6
- const url = new URL(`${resolveApiBase()}/v2${endpoint}`);
7
- if (params) {
8
- Object.entries(params).forEach(([k, v]) => url.searchParams.set(k, v));
9
- }
10
- let res;
11
- try {
12
- res = await fetch(url.toString(), { signal: AbortSignal.timeout(30_000) });
13
- }
14
- catch (e) {
15
- const err = e;
16
- throw new Error(err.name === 'TimeoutError' ? '请求超时(30s)' : `请求失败: ${err.message}`, { cause: e });
17
- }
18
- if (!res.ok) {
19
- throw new Error(`API 请求失败: ${res.status} ${res.statusText}`);
20
- }
21
- const contentType = res.headers.get('content-type') ?? '';
22
- if (!contentType.includes('application/json')) {
23
- throw new Error(`API 返回非 JSON 响应 (content-type: ${contentType || 'unknown'})`);
24
- }
25
- const data = (await res.json());
26
- if (data.error)
27
- throw new Error(data.error);
28
- if (data.code !== undefined && data.code !== 200 && data.code !== 0) {
29
- throw new Error(data.message || data.msg || `API 错误: ${data.code}`);
30
- }
31
- return (data.data ?? data);
32
- }
33
1
  /** Coerce nested API JSON objects for property access in handlers. */
34
2
  export function asRecord(value) {
35
3
  return value !== null && typeof value === 'object' && !Array.isArray(value)
package/lib/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAKA,sEAAsE;AACtE,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzE,CAAC,CAAE,KAAoB;QACvB,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAiB,EAAE,KAAK,GAAG,EAAE;IACtD,OAAO,KAAK;SACT,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACf,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,MAAM,KAAK,GAAG,GAAG;YACf,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;YACnD,CAAC,CAAC,IAAI,CAAC;QACT,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QACvD,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,MAAM,EAAE,CAAC;IACvC,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
package/lib/client.js ADDED
@@ -0,0 +1,42 @@
1
+ import { createToken } from 'zhin.js';
2
+ export const DEFAULT_API_BASE = 'https://60s.viki.moe';
3
+ /** Owner-scoped transport for one 60s plugin instance. */
4
+ export class SixtySClient {
5
+ #getApiBase;
6
+ constructor(getApiBase) {
7
+ this.#getApiBase = getApiBase;
8
+ }
9
+ get apiBase() {
10
+ return this.#getApiBase()?.trim().replace(/\/$/u, '') || DEFAULT_API_BASE;
11
+ }
12
+ async fetch(endpoint, params) {
13
+ const url = new URL(`${this.apiBase}/v2${endpoint}`);
14
+ for (const [key, value] of Object.entries(params ?? {})) {
15
+ url.searchParams.set(key, value);
16
+ }
17
+ let response;
18
+ try {
19
+ response = await fetch(url, { signal: AbortSignal.timeout(30_000) });
20
+ }
21
+ catch (error) {
22
+ const cause = error;
23
+ throw new Error(cause.name === 'TimeoutError' ? '请求超时(30s)' : `请求失败: ${cause.message}`, { cause: error });
24
+ }
25
+ if (!response.ok) {
26
+ throw new Error(`API 请求失败: ${response.status} ${response.statusText}`);
27
+ }
28
+ const contentType = response.headers.get('content-type') ?? '';
29
+ if (!contentType.includes('application/json')) {
30
+ throw new Error(`API 返回非 JSON 响应 (content-type: ${contentType || 'unknown'})`);
31
+ }
32
+ const envelope = (await response.json());
33
+ if (envelope.error)
34
+ throw new Error(envelope.error);
35
+ if (envelope.code !== undefined && envelope.code !== 200 && envelope.code !== 0) {
36
+ throw new Error(envelope.message || envelope.msg || `API 错误: ${envelope.code}`);
37
+ }
38
+ return (envelope.data ?? envelope);
39
+ }
40
+ }
41
+ export const sixtySClientToken = createToken('zhin.sixty-s.client', 'Owner-scoped 60s API client');
42
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAIvD,0DAA0D;AAC1D,MAAM,OAAO,YAAY;IACd,WAAW,CAAgB;IAEpC,YAAY,UAAyB;QACnC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAChC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,gBAAgB,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,KAAK,CACT,QAAgB,EAChB,MAAyC;QAEzC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,MAAM,QAAQ,EAAE,CAAC,CAAC;QACrD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,KAAc,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,OAAO,EAAE,EACtE,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,aAAa,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAC/D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,kCAAkC,WAAW,IAAI,SAAS,GAAG,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAMtC,CAAC;QACF,IAAI,QAAQ,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAChF,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,GAAG,IAAI,WAAW,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAM,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAC1C,qBAAqB,EACrB,6BAA6B,CAC9B,CAAC"}
@@ -1,6 +1,5 @@
1
- import { fetchApi } from '../api.js';
2
- export default async function () {
3
- const data = await fetchApi('/60s');
1
+ export default async function (client) {
2
+ const data = await client.fetch('/60s');
4
3
  const lines = [`📰 今日60秒新闻 (${data.date || ''})`, ''];
5
4
  if (data.news && Array.isArray(data.news)) {
6
5
  lines.push(...data.news.map((n, i) => `${i + 1}. ${n}`));
@@ -1 +1 @@
1
- {"version":3,"file":"60s-news.js","sourceRoot":"","sources":["../../src/handlers/60s-news.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,CAAC,OAAO,CAAC,KAAK;IAClB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,CAAC,eAAe,IAAI,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACtD,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,IAAI,CAAC,GAAG;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"60s-news.js","sourceRoot":"","sources":["../../src/handlers/60s-news.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW,MAAoB;IACjD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,CAAC,eAAe,IAAI,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACtD,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,IAAI,CAAC,GAAG;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -1,6 +1,6 @@
1
- import { asString, fetchApi } from '../api.js';
2
- export default async function () {
3
- const data = await fetchApi('/bing');
1
+ import { asString } from '../api.js';
2
+ export default async function (client) {
3
+ const data = await client.fetch('/bing');
4
4
  const lines = ['🖼️ Bing 每日壁纸', ''];
5
5
  if (data.title)
6
6
  lines.push(`📌 ${data.title}`);
@@ -1 +1 @@
1
- {"version":3,"file":"bing-image.js","sourceRoot":"","sources":["../../src/handlers/bing-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,CAAC,OAAO,CAAC,KAAK;IAClB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IACpC,IAAI,IAAI,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/C,IAAI,IAAI,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACvD,IAAI,IAAI,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;IACrE,IAAI,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"bing-image.js","sourceRoot":"","sources":["../../src/handlers/bing-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGrC,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW,MAAoB;IACjD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IACpC,IAAI,IAAI,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/C,IAAI,IAAI,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACvD,IAAI,IAAI,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;IACrE,IAAI,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -1,6 +1,6 @@
1
- import { fetchApi, formatList } from '../api.js';
2
- export default async function (args) {
3
- const data = await fetchApi('/douyin');
1
+ import { formatList } from '../api.js';
2
+ export default async function (client, args) {
3
+ const data = await client.fetch('/douyin');
4
4
  return ['🔥 抖音热搜', '', formatList(data, args.limit || 10)].join('\n');
5
5
  }
6
6
  //# sourceMappingURL=douyin-hot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"douyin-hot.js","sourceRoot":"","sources":["../../src/handlers/douyin-hot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAiB,MAAM,WAAW,CAAC;AAEhE,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW,IAAwB;IACrD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAa,SAAS,CAAC,CAAC;IACnD,OAAO,CAAC,SAAS,EAAE,EAAE,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxE,CAAC"}
1
+ {"version":3,"file":"douyin-hot.js","sourceRoot":"","sources":["../../src/handlers/douyin-hot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,WAAW,CAAC;AAGtD,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW,MAAoB,EAAE,IAAwB;IAC3E,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAa,SAAS,CAAC,CAAC;IACvD,OAAO,CAAC,SAAS,EAAE,EAAE,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxE,CAAC"}
@@ -1,6 +1,5 @@
1
- import { fetchApi } from '../api.js';
2
- export default async function () {
3
- const data = await fetchApi('/duanzi');
1
+ export default async function (client) {
2
+ const data = await client.fetch('/duanzi');
4
3
  return `😂 段子\n\n${data.duanzi || data.content || data.text || (typeof data === 'string' ? data : '')}`;
5
4
  }
6
5
  //# sourceMappingURL=duanzi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"duanzi.js","sourceRoot":"","sources":["../../src/handlers/duanzi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,CAAC,OAAO,CAAC,KAAK;IAClB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvC,OAAO,YAAY,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC1G,CAAC"}
1
+ {"version":3,"file":"duanzi.js","sourceRoot":"","sources":["../../src/handlers/duanzi.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW,MAAoB;IACjD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3C,OAAO,YAAY,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC1G,CAAC"}
@@ -1,11 +1,11 @@
1
- import { asArray, asRecord, asString, fetchApi } from '../api.js';
2
- export default async function (args) {
1
+ import { asArray, asRecord, asString } from '../api.js';
2
+ export default async function (client, args) {
3
3
  const params = {};
4
4
  if (args.from)
5
5
  params.from = args.from.toUpperCase();
6
6
  if (args.to)
7
7
  params.to = args.to.toUpperCase();
8
- const data = await fetchApi('/exchange-rate', Object.keys(params).length ? params : undefined);
8
+ const data = await client.fetch('/exchange-rate', Object.keys(params).length ? params : undefined);
9
9
  const lines = ['💱 汇率查询', ''];
10
10
  const base = data.base_code || args.from || 'CNY';
11
11
  lines.push(`基准货币: ${base}`);
@@ -1 +1 @@
1
- {"version":3,"file":"exchange-rate.js","sourceRoot":"","sources":["../../src/handlers/exchange-rate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAElE,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW,IAAoC;IACjE,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,IAAI,IAAI,CAAC,IAAI;QAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrD,IAAI,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAM,QAAQ,CACzB,gBAAgB,EAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAChD,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;IAClD,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAC5B,IAAI,IAAI,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACtD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,gBAAgB,GAAG,IAAI,CAAC,EAAE;QAC9B,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3E,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC7D,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"exchange-rate.js","sourceRoot":"","sources":["../../src/handlers/exchange-rate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAGxD,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW,MAAoB,EAAE,IAAoC;IACvF,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,IAAI,IAAI,CAAC,IAAI;QAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACrD,IAAI,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAC7B,gBAAgB,EAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAChD,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;IAClD,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAC5B,IAAI,IAAI,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACtD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,gBAAgB,GAAG,IAAI,CAAC,EAAE;QAC9B,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3E,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC7D,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -1,9 +1,9 @@
1
- import { asRecord, asString, fetchApi } from '../api.js';
2
- export default async function (args) {
1
+ import { asRecord, asString } from '../api.js';
2
+ export default async function (client, args) {
3
3
  const params = args.province
4
4
  ? { province: args.province }
5
5
  : undefined;
6
- const data = await fetchApi('/fuel-price', params);
6
+ const data = await client.fetch('/fuel-price', params);
7
7
  const lines = ['⛽ 今日油价', ''];
8
8
  if (data.region)
9
9
  lines.push(`📍 ${data.region}`);