koishi-plugin-chat-patch 3.0.2 → 5.0.0

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 (194) hide show
  1. package/client/vue/index.vue +60 -634
  2. package/client/web/env.d.ts +56 -0
  3. package/client/web/index.html +21 -0
  4. package/client/web/package-lock.json +3419 -0
  5. package/client/web/package.json +62 -0
  6. package/client/web/public/bcui/css/color-dark.css +35 -0
  7. package/client/web/public/bcui/css/color-light.css +35 -0
  8. package/client/web/public/bcui/css/style.css +468 -0
  9. package/client/web/public/bcui/js/main.js +193 -0
  10. package/client/web/public/css/append-dark.css +13 -0
  11. package/client/web/public/css/append-light.css +13 -0
  12. package/client/web/public/css/append-napcat-dark.css +14 -0
  13. package/client/web/public/css/append-napcat-light.css +14 -0
  14. package/client/web/public/favicon.ico +0 -0
  15. package/client/web/public/img/icons/icon-for-fuck-apple.png +0 -0
  16. package/client/web/public/img/icons/icon-maskable.png +0 -0
  17. package/client/web/public/img/icons/icon.png +0 -0
  18. package/client/web/public/img/icons/icon.svg +10 -0
  19. package/client/web/public/robots.txt +2 -0
  20. package/client/web/public/sw.js +58 -0
  21. package/client/web/scripts/copy-bcui.mjs +17 -0
  22. package/client/web/src/App.vue +1127 -0
  23. package/client/web/src/assets/css/append/append_darwin.css +68 -0
  24. package/client/web/src/assets/css/append/append_full_vibrancy.css +290 -0
  25. package/client/web/src/assets/css/append/append_linux.css +125 -0
  26. package/client/web/src/assets/css/append/append_linux_vibrancy.css +22 -0
  27. package/client/web/src/assets/css/append/append_napcat.css +35 -0
  28. package/client/web/src/assets/css/append/append_new.css +843 -0
  29. package/client/web/src/assets/css/append/append_vibrancy.css +113 -0
  30. package/client/web/src/assets/css/append/append_win32.css +109 -0
  31. package/client/web/src/assets/css/append/mobile/append_mobile_horizontal.css +349 -0
  32. package/client/web/src/assets/css/append/mobile/append_mobile_vertical.css +96 -0
  33. package/client/web/src/assets/css/chat.css +2104 -0
  34. package/client/web/src/assets/css/msg.css +941 -0
  35. package/client/web/src/assets/css/options.css +811 -0
  36. package/client/web/src/assets/css/sys_notice.css +62 -0
  37. package/client/web/src/assets/css/view.css +2105 -0
  38. package/client/web/src/assets/font//346/226/271/346/255/243/345/226/265/345/221/234/344/275/223.ttf +0 -0
  39. package/client/web/src/assets/img/Vue.png +0 -0
  40. package/client/web/src/assets/img/cakes.svg +189 -0
  41. package/client/web/src/assets/img/icons/AppIcon.png +0 -0
  42. package/client/web/src/assets/img/icons/AppIconDark.png +0 -0
  43. package/client/web/src/assets/img/icons/CapacitorAppIcon.png +0 -0
  44. package/client/web/src/assets/img/icons/CapacitorAppIconDark.png +0 -0
  45. package/client/web/src/assets/img/icons/NapcatAppIcon.png +0 -0
  46. package/client/web/src/assets/img/icons/NapcatAppIconDark.png +0 -0
  47. package/client/web/src/assets/img/icons/exit.png +0 -0
  48. package/client/web/src/assets/img/icons/pen.png +0 -0
  49. package/client/web/src/assets/img/stars.svg +89 -0
  50. package/client/web/src/assets/img//346/234/237/345/276/205.png +0 -0
  51. package/client/web/src/assets/l10n/_About I10n.md +35 -0
  52. package/client/web/src/assets/l10n/_l10nconfig.json +7 -0
  53. package/client/web/src/assets/l10n/zh-CN.po +1941 -0
  54. package/client/web/src/assets/logo.png +0 -0
  55. package/client/web/src/assets/pathMap/LLOneBot.yaml +2 -0
  56. package/client/web/src/assets/pathMap/Lagrange.OneBot.yaml +180 -0
  57. package/client/web/src/assets/pathMap/NapCat.Onebot.yaml +224 -0
  58. package/client/web/src/assets/pathMap/SnowLuma.yaml +80 -0
  59. package/client/web/src/assets/qed.txt +1 -0
  60. package/client/web/src/components/AboutPan.vue +197 -0
  61. package/client/web/src/components/BulletinBody.vue +129 -0
  62. package/client/web/src/components/DepPan.vue +310 -0
  63. package/client/web/src/components/EmojiFace.vue +32 -0
  64. package/client/web/src/components/FacePan.vue +461 -0
  65. package/client/web/src/components/FileBody.vue +129 -0
  66. package/client/web/src/components/FileManager.vue +532 -0
  67. package/client/web/src/components/FriendBody.vue +54 -0
  68. package/client/web/src/components/GlobalSessionSearchBar.vue +301 -0
  69. package/client/web/src/components/History.vue +49 -0
  70. package/client/web/src/components/LazyLottie.vue +82 -0
  71. package/client/web/src/components/MergePan.vue +127 -0
  72. package/client/web/src/components/MsgBody.vue +1478 -0
  73. package/client/web/src/components/MusicPlayer.vue +549 -0
  74. package/client/web/src/components/NoticeBody.vue +168 -0
  75. package/client/web/src/components/QzonePermissionPan.vue +150 -0
  76. package/client/web/src/components/RawMsgRenderPreviewPan.vue +190 -0
  77. package/client/web/src/components/ThemeColorPickerPan.vue +420 -0
  78. package/client/web/src/components/TinySessionBody.vue +51 -0
  79. package/client/web/src/components/UmamiInfoPan.vue +1549 -0
  80. package/client/web/src/components/UpdatePan.vue +263 -0
  81. package/client/web/src/components/ViewerCom.vue +1360 -0
  82. package/client/web/src/components/VoiceMsg.vue +626 -0
  83. package/client/web/src/components/WelPan.vue +894 -0
  84. package/client/web/src/components/msg-body/.gitkeep +0 -0
  85. package/client/web/src/components/msg-component/JsonSegComp.vue +138 -0
  86. package/client/web/src/components/msg-component/XmlSegComp.vue +132 -0
  87. package/client/web/src/components/msg-component/jsonComp/AutoReply.vue +97 -0
  88. package/client/web/src/components/msg-component/jsonComp/Contact.lua.vue +129 -0
  89. package/client/web/src/components/msg-component/jsonComp/Feed.lua.vue +94 -0
  90. package/client/web/src/components/msg-component/jsonComp/Forum.vue +84 -0
  91. package/client/web/src/components/msg-component/jsonComp/Mannounce.vue +111 -0
  92. package/client/web/src/components/msg-component/jsonComp/Map.vue +52 -0
  93. package/client/web/src/components/msg-component/jsonComp/Miniapp.lua.vue +53 -0
  94. package/client/web/src/components/msg-component/jsonComp/Miniapp.vue +69 -0
  95. package/client/web/src/components/msg-component/jsonComp/Music.lua.vue +135 -0
  96. package/client/web/src/components/msg-component/jsonComp/Tuwen.lua.vue +56 -0
  97. package/client/web/src/components/notice-component/.gitkeep +0 -0
  98. package/client/web/src/components/notice-component/MealHungryPan.vue +119 -0
  99. package/client/web/src/components/tooltip/CustomFaceTooltip.vue +22 -0
  100. package/client/web/src/components/tooltip/Tooltip.vue +50 -0
  101. package/client/web/src/components/tooltip/Tooltips.vue +14 -0
  102. package/client/web/src/components/tooltip/UserInfoTooltip.vue +69 -0
  103. package/client/web/src/function/base.ts +238 -0
  104. package/client/web/src/function/connect.ts +2042 -0
  105. package/client/web/src/function/debug.ts +10 -0
  106. package/client/web/src/function/elements/information.ts +141 -0
  107. package/client/web/src/function/elements/system.ts +101 -0
  108. package/client/web/src/function/elements/vueComp.ts +62 -0
  109. package/client/web/src/function/favicon.ts +76 -0
  110. package/client/web/src/function/input.ts +69 -0
  111. package/client/web/src/function/model/emoji.ts +127 -0
  112. package/client/web/src/function/model/img.ts +150 -0
  113. package/client/web/src/function/model/msg-body.ts +51 -0
  114. package/client/web/src/function/msg.ts +2674 -0
  115. package/client/web/src/function/notify.ts +225 -0
  116. package/client/web/src/function/option.ts +749 -0
  117. package/client/web/src/function/satori-model.ts +818 -0
  118. package/client/web/src/function/satori.ts +325 -0
  119. package/client/web/src/function/sender.ts +178 -0
  120. package/client/web/src/function/tooltip.ts +49 -0
  121. package/client/web/src/function/utils/appUtil.ts +2288 -0
  122. package/client/web/src/function/utils/avatarUtil.ts +31 -0
  123. package/client/web/src/function/utils/backgroundUtil.ts +110 -0
  124. package/client/web/src/function/utils/linkViewUtil.ts +101 -0
  125. package/client/web/src/function/utils/localHistoryUtil.ts +517 -0
  126. package/client/web/src/function/utils/msgUtil.ts +1242 -0
  127. package/client/web/src/function/utils/pinyin.ts +141 -0
  128. package/client/web/src/function/utils/recordUtil.ts +187 -0
  129. package/client/web/src/function/utils/sessionUtil.ts +114 -0
  130. package/client/web/src/function/utils/systemUtil.ts +664 -0
  131. package/client/web/src/main.ts +91 -0
  132. package/client/web/src/pages/Chat.vue +3453 -0
  133. package/client/web/src/pages/Friends.vue +636 -0
  134. package/client/web/src/pages/Info.vue +717 -0
  135. package/client/web/src/pages/Messages.vue +875 -0
  136. package/client/web/src/pages/Options.vue +82 -0
  137. package/client/web/src/pages/Qzone.vue +1178 -0
  138. package/client/web/src/pages/chat-view/ChatDanmaku.vue +759 -0
  139. package/client/web/src/pages/chat-view/ChatGlagame.vue +642 -0
  140. package/client/web/src/pages/chat-view/ChatTerminal.vue +1044 -0
  141. package/client/web/src/pages/chat-view/SystemNotice.vue +171 -0
  142. package/client/web/src/pages/options/OptAccount.vue +107 -0
  143. package/client/web/src/pages/options/OptAddon.vue +185 -0
  144. package/client/web/src/pages/options/OptDev.vue +704 -0
  145. package/client/web/src/pages/options/OptFunction.vue +403 -0
  146. package/client/web/src/pages/options/OptInfo.vue +165 -0
  147. package/client/web/src/pages/options/OptView.vue +846 -0
  148. package/client/web/src/runtime/backend.ts +310 -0
  149. package/client/web/src/state/auth.ts +14 -0
  150. package/client/web/src/state/chat.ts +36 -0
  151. package/client/web/src/state/connection.ts +20 -0
  152. package/client/web/src/state/contact.ts +37 -0
  153. package/client/web/src/state/qzone.ts +18 -0
  154. package/client/web/src/state/sessionHistory.ts +25 -0
  155. package/client/web/src/state/settings.ts +18 -0
  156. package/client/web/src/state/sticker.ts +10 -0
  157. package/client/web/src/state/ui.ts +56 -0
  158. package/client/web/tsconfig.json +27 -0
  159. package/client/web/tsconfig.tsbuildinfo +1 -0
  160. package/client/web/vite.config.ts +33 -0
  161. package/dist/index.js +1 -12
  162. package/dist/style.css +1 -1
  163. package/lib/index.js +2070 -2077
  164. package/package.json +15 -2
  165. package/readme.md +0 -22
  166. package/src/bootstrap.ts +71 -0
  167. package/src/cache.ts +319 -0
  168. package/src/config.ts +23 -35
  169. package/src/database.ts +650 -0
  170. package/src/index.ts +27 -59
  171. package/src/media.ts +302 -0
  172. package/src/recorder.ts +175 -0
  173. package/src/self-message.ts +456 -0
  174. package/src/server.d.ts +26 -0
  175. package/src/types.ts +108 -48
  176. package/src/web.ts +712 -0
  177. package/client/vue/chat-logic.ts +0 -683
  178. package/client/vue/composables/useChatActions.ts +0 -61
  179. package/client/vue/composables/useChatData.ts +0 -185
  180. package/client/vue/composables/useImageCache.ts +0 -281
  181. package/client/vue/composables/useVideoCache.ts +0 -125
  182. package/client/vue/types.ts +0 -72
  183. package/lib/api-handlers.d.ts +0 -25
  184. package/lib/config.d.ts +0 -14
  185. package/lib/file-manager.d.ts +0 -124
  186. package/lib/index.d.ts +0 -17
  187. package/lib/logger.d.ts +0 -9
  188. package/lib/message-handler.d.ts +0 -35
  189. package/lib/types.d.ts +0 -57
  190. package/lib/utils.d.ts +0 -18
  191. package/src/api-handlers.ts +0 -646
  192. package/src/file-manager.ts +0 -1436
  193. package/src/message-handler.ts +0 -507
  194. package/src/utils.ts +0 -189
@@ -0,0 +1,150 @@
1
+ /*
2
+ * @FileDescription: 图片节点
3
+ * @Author: Mr.Lee
4
+ * @Date: 2025/08/23
5
+ * @Version: 1.0
6
+ * @Description: 图片节点,主用给图片预览器使用
7
+ */
8
+
9
+ import { backend } from '../../runtime/backend'
10
+ import { shallowRef } from 'vue'
11
+
12
+ export class Img {
13
+ _src: string
14
+ readonly _prev = shallowRef<Img | undefined>()
15
+ readonly _next = shallowRef<Img | undefined>()
16
+ constructor(src: string) {
17
+ this._src = src
18
+ }
19
+
20
+ get src(): string {
21
+ return backend.proxyUrl(this._src)
22
+ }
23
+
24
+
25
+ /**
26
+ * 根据 src 获取图片节点
27
+ *
28
+ * ** 此方法在大量图片时,性能较差,请谨慎使用 **
29
+ * @param src 图片地址
30
+ * @returns 图片节点
31
+ */
32
+ getBySrc(src: string): Img | undefined {
33
+ if (this._src === src || this.src === src) return this
34
+ if (this.next) return this.next.getBySrc(src)
35
+ return undefined
36
+ }
37
+
38
+ /**
39
+ * 删除图片
40
+ */
41
+ delete() {
42
+ if (this.prev) this.prev.next = this.next
43
+ if (this.next) this.next.prev = this.prev
44
+ }
45
+
46
+ /**
47
+ * 尾部添加图片
48
+ * @param other 其他图片
49
+ */
50
+ insertNext(other: Img) {
51
+ other.prev = this
52
+ other.next = this.next
53
+ this.next = other
54
+ }
55
+ /**
56
+ * 头部添加图片
57
+ * @param other 其他图片
58
+ */
59
+ insertPrev(other: Img) {
60
+ other.prev = this.prev
61
+ other.next = this
62
+ this.prev = other
63
+ }
64
+
65
+ /**
66
+ * 向后合并图片列表
67
+ * @param otherHead 其他图片列表
68
+ */
69
+ concatNext(otherHead: Img) {
70
+ if (otherHead.prev) throw new Error('otherHead.prev 不为空,不能合并,请使用 extendNext')
71
+ if (this.next) throw new Error('this.next 不为空,不能合并,请使用 extendNext')
72
+ this.next = otherHead
73
+ otherHead.prev = this
74
+ }
75
+ /**
76
+ * 向前合并图片列表
77
+ * @param otherTail 其他图片列表
78
+ */
79
+ concatPrev(otherTail: Img) {
80
+ if (otherTail.next) throw new Error('otherTail.next 不为空,不能合并,请使用 extendPrev')
81
+ if (this.prev) throw new Error('this.prev 不为空,不能合并,请使用 extendPrev')
82
+ this.prev = otherTail
83
+ otherTail.next = this
84
+ }
85
+
86
+ /**
87
+ * 向后插入图片列表
88
+ * @param other 其他图片列表
89
+ */
90
+ extendNext(other: Img) {
91
+ const next = other.next
92
+ this.insertNext(other)
93
+ if (next) other.extendNext(next)
94
+ }
95
+ /**
96
+ * 向前插入图片列表
97
+ * @param other 其他图片列表
98
+ */
99
+ extendPrev(other: Img) {
100
+ const prev = other.prev
101
+ this.insertPrev(other)
102
+ if (prev) other.extendPrev(prev)
103
+ }
104
+
105
+ get prev() {
106
+ return this._prev.value
107
+ }
108
+
109
+ get next() {
110
+ return this._next.value
111
+ }
112
+
113
+ set prev(img: Img | undefined) {
114
+ this._prev.value = img
115
+ }
116
+
117
+ set next(img: Img | undefined) {
118
+ this._next.value = img
119
+ }
120
+
121
+ /**
122
+ * 将链表内容转换为数组
123
+ * @returns 图片地址数组
124
+ */
125
+ toArray(): string[] {
126
+ const result: string[] = []
127
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
128
+ let cur: Img | undefined = this
129
+ while (cur) {
130
+ result.push(cur._src)
131
+ cur = cur.next
132
+ }
133
+ return result
134
+ }
135
+
136
+ /**
137
+ * 从 srcList 构建链表
138
+ */
139
+ static fromList(srcList: string[]): Img | undefined {
140
+ if (srcList.length === 0) return undefined
141
+ const head = new Img(srcList[0])
142
+ let cur = head
143
+ for (let i = 1; i < srcList.length; i++) {
144
+ const node = new Img(srcList[i])
145
+ cur.insertNext(node)
146
+ cur = node
147
+ }
148
+ return head
149
+ }
150
+ }
@@ -0,0 +1,51 @@
1
+ /*
2
+ * @FileDescription: MsgBody.vue 所使模块用的通用的消息显示相关
3
+ * @Author: Stapxs
4
+ * @Date: 2022/11/29
5
+ * @Version: 1.0
6
+ * @Description: 此模块抽离出了本来在 MsgBody.vue 中的一些较为通用的方法便于进行多 Bot 适配。
7
+ */
8
+
9
+ import xss from 'xss'
10
+
11
+ export class MsgBodyFuns {
12
+ /**
13
+ * 判断消息块是否需要行内显示
14
+ * @param typeName 消息类型
15
+ * @returns T / F
16
+ */
17
+ static isMsgInline(typeName: string) {
18
+ switch (typeName) {
19
+ case 'at':
20
+ case 'text':
21
+ case 'face':
22
+ case 'i18n':
23
+ return true
24
+ case 'bface':
25
+ case 'image':
26
+ case 'record':
27
+ case 'video':
28
+ case 'file':
29
+ case 'json':
30
+ case 'xml':
31
+ return false
32
+ }
33
+ return false
34
+ }
35
+
36
+ /**
37
+ * 处理纯文本消息(处理换行,转义字符并进行 xss 过滤便于高亮链接)
38
+ * @param { string } text 文本
39
+ * @returns 处理完成的文本
40
+ */
41
+ static parseText(text: string) {
42
+ // 把 r 转为 n
43
+ text = text.replaceAll('\r\n', '\n').replaceAll('\r', '\n')
44
+ // 还原转义字符
45
+ text = text.replace(/&([^;]+);/g, '&amp;$1;')
46
+ // XSS 过滤
47
+ text = xss(text, { whiteList: { a: ['href', 'target'] } })
48
+ // 返回
49
+ return text
50
+ }
51
+ }