koishi-plugin-chat-patch 0.8.2 → 1.0.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/client/vue/index.vue +608 -22
- package/client/vue/style.css +355 -0
- package/dist/index.js +8 -8
- package/dist/style.css +1 -1
- package/lib/api-handlers.d.ts +17 -0
- package/lib/config.d.ts +13 -0
- package/lib/file-manager.d.ts +17 -0
- package/lib/index.d.ts +4 -13
- package/lib/index.js +857 -454
- package/lib/message-handler.d.ts +16 -0
- package/lib/types.d.ts +53 -0
- package/lib/utils.d.ts +7 -0
- package/package.json +3 -3
- package/src/api-handlers.ts +593 -0
- package/src/config.ts +45 -0
- package/src/file-manager.ts +162 -0
- package/src/index.ts +45 -753
- package/src/message-handler.ts +247 -0
- package/src/types.ts +58 -0
- package/src/utils.ts +43 -0
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.message-quote[data-v-23dd8b18]{margin:8px 0;padding:8px 12px;background-color:#bebebe1a;border-left:4px solid rgba(151,152,152,.45);border-radius:6px;font-size:.9em;position:relative}.quote-indicator[data-v-23dd8b18]{font-size:.75em;color:#007bff;font-weight:600;margin-bottom:4px;text-transform:uppercase}.quote-header[data-v-23dd8b18]{display:flex;align-items:center;margin-bottom:4px;gap:6px}.quote-avatar[data-v-23dd8b18]{width:20px;height:20px;border-radius:50%;overflow:hidden;flex-shrink:0}.quote-avatar img[data-v-23dd8b18]{width:100%;height:100%;object-fit:cover}.quote-avatar .avatar-placeholder[data-v-23dd8b18]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#6c757d;color:#fff;font-size:10px;font-weight:700}.quote-username[data-v-23dd8b18]{font-weight:600;color:#007bff;font-size:.85em}.quote-time[data-v-23dd8b18]{color:#6c757d;font-size:.75em;margin-left:auto}.quote-content[data-v-23dd8b18]{color:#7276b7;line-height:1.3;word-wrap:break-word}.quote-content .message-image[data-v-23dd8b18]{max-width:200px;max-height:100px}.quote-content .message-image-container[data-v-23dd8b18]{margin:2px 0}@media (prefers-color-scheme: dark){.message-quote[data-v-23dd8b18]{background-color:#ffffff14;border-left-color:#0d6efd}.quote-content[data-v-23dd8b18]{color:#adb5bd}.quote-username[data-v-23dd8b18]{color:#0d6efd}}.chat-container[data-v-23dd8b18]{display:flex;height:100vh;background:transparent;margin-left:0%;width:100%;overflow:hidden;color:inherit;position:relative}.bot-list[data-v-23dd8b18],.channel-list[data-v-23dd8b18],.message-area[data-v-23dd8b18]{display:flex;flex-direction:column;background:transparent;border-right:1px solid rgba(128,128,128,.2)}.bot-list[data-v-23dd8b18]{width:250px;min-width:250px;max-width:250px;flex-shrink:0}.channel-list[data-v-23dd8b18]{width:300px;min-width:300px;max-width:300px;flex-shrink:0}.message-area[data-v-23dd8b18]{flex:1;border-right:none}.panel-header[data-v-23dd8b18]{padding:16px;border-bottom:1px solid rgba(128,128,128,.2);background:transparent;display:flex;align-items:center;justify-content:space-between}.panel-header h3[data-v-23dd8b18]{margin:0;font-size:16px;font-weight:600;color:currentColor}.back-button[data-v-23dd8b18]{display:none;background:none;border:none;color:currentColor;font-size:18px;cursor:pointer;padding:4px 8px;border-radius:4px;transition:background-color .2s}.back-button[data-v-23dd8b18]:hover{background:#8080801a}.bot-items[data-v-23dd8b18],.channel-items[data-v-23dd8b18]{flex:1;overflow-y:auto;max-height:calc(100vh - 60px)}.bot-item[data-v-23dd8b18],.channel-item[data-v-23dd8b18]{display:flex;align-items:center;padding:12px 16px;cursor:pointer;border-bottom:1px solid rgba(128,128,128,.1);transition:background-color .2s}.bot-item[data-v-23dd8b18]:hover,.channel-item[data-v-23dd8b18]:hover{background:#8080801a}.bot-item.active[data-v-23dd8b18],.channel-item.active[data-v-23dd8b18]{background:#2196f31a;border-right:3px solid #2196f3}.bot-avatar[data-v-23dd8b18]{width:40px;height:40px;margin-right:12px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#e0e0e0}.bot-avatar img[data-v-23dd8b18]{width:100%;height:100%;object-fit:cover}.avatar-placeholder[data-v-23dd8b18]{font-size:16px;font-weight:700;color:currentColor;opacity:.7}.bot-info[data-v-23dd8b18]{flex:1}.bot-name[data-v-23dd8b18]{font-weight:500;color:currentColor;margin-bottom:2px}.bot-platform[data-v-23dd8b18]{font-size:12px;color:currentColor;opacity:.7}.bot-status[data-v-23dd8b18]{width:8px;height:8px;border-radius:50%;margin-left:8px}.bot-status.online[data-v-23dd8b18]{background:#4caf50}.bot-status.offline[data-v-23dd8b18]{background:#f44336}.channel-info[data-v-23dd8b18]{flex:1}.channel-name[data-v-23dd8b18]{font-weight:500;color:currentColor;margin-bottom:2px}.channel-type[data-v-23dd8b18]{font-size:12px;color:currentColor;opacity:.7}.channel-message-count[data-v-23dd8b18]{background:#2196f3;color:#fff;font-size:12px;padding:2px 6px;border-radius:10px;min-width:18px;text-align:center;position:relative;transition:all .2s ease}.channel-message-count.draggable-bubble[data-v-23dd8b18]{cursor:grab;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.channel-message-count.draggable-bubble[data-v-23dd8b18]:hover{background:#1976d2;transform:scale(1.1);box-shadow:0 2px 8px #2196f34d}.channel-message-count.draggable-bubble[data-v-23dd8b18]:active,.channel-message-count.draggable-bubble.dragging[data-v-23dd8b18]{cursor:grabbing;background:#1565c0;box-shadow:0 4px 12px #2196f366}.dragging-clone[data-v-23dd8b18]{position:fixed;z-index:1000;pointer-events:none;transition:none;box-sizing:border-box;display:flex;align-items:center;justify-content:center;background:#2196f3;color:#fff;font-size:12px;padding:2px 6px;border-radius:10px;min-width:18px;text-align:center;box-shadow:0 4px 12px #2196f366}.dragging-clone.will-delete[data-v-23dd8b18]{background:#f44336!important;animation:shake-23dd8b18 .3s ease-in-out infinite}@keyframes pulseThreshold-23dd8b18{0%,to{opacity:.4;transform:scale(.9);border-color:#f4433699;box-shadow:0 0 15px #f4433633}50%{opacity:.8;transform:scale(1.1);border-color:#f44336;box-shadow:0 0 25px #f4433666}}.message-content[data-v-23dd8b18]{display:flex;flex-direction:column;height:calc(100vh - 60px);overflow:hidden;position:relative}.message-history[data-v-23dd8b18]{flex:1;overflow-y:auto;padding:16px 16px 8px;max-height:calc(100vh - 200px)}.message-item[data-v-23dd8b18]{display:flex;margin-bottom:16px;padding:8px;border-radius:8px;transition:background-color .3s ease}.message-item[data-v-23dd8b18]:hover{background-color:#8080801a}.message-item.new-message[data-v-23dd8b18]{background-color:#4caf5033;animation:highlight-23dd8b18 2s ease-out}.message-item.bot-message[data-v-23dd8b18]{flex-direction:row-reverse;justify-content:flex-start}.message-item.bot-message .message-avatar[data-v-23dd8b18]{margin-right:0;margin-left:12px}.message-item.bot-message .message-content-wrapper[data-v-23dd8b18]{display:flex;flex-direction:column;align-items:flex-end}.message-item.bot-message .message-header[data-v-23dd8b18]{display:flex;align-items:center;justify-content:flex-end;margin-bottom:4px}.message-item.bot-message .message-username[data-v-23dd8b18]{margin-right:0;margin-left:8px;order:2}.message-item.bot-message .message-time[data-v-23dd8b18]{order:1}.message-item.bot-message .message-text[data-v-23dd8b18]{background-color:#2196f31a;padding:8px 12px;border-radius:12px 12px 4px;display:inline-block;max-width:80%;text-align:left}@keyframes highlight-23dd8b18{0%{background-color:#4caf504d}to{background-color:transparent}}.message-avatar[data-v-23dd8b18]{width:32px;height:32px;margin-right:12px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#e0e0e0;flex-shrink:0}.message-avatar img[data-v-23dd8b18]{width:100%;height:100%;object-fit:cover}.message-avatar .avatar-placeholder[data-v-23dd8b18]{font-size:12px;font-weight:700;color:currentColor;opacity:.7}.message-content-wrapper[data-v-23dd8b18]{flex:1}.message-header[data-v-23dd8b18]{display:flex;align-items:center;margin-bottom:4px}.message-username[data-v-23dd8b18]{font-weight:500;color:currentColor;margin-right:8px}.message-time[data-v-23dd8b18]{font-size:12px;color:currentColor;opacity:.5}.message-text[data-v-23dd8b18]{color:currentColor;line-height:1.4;word-wrap:break-word;word-break:break-word;white-space:pre-wrap;max-width:100%;overflow-wrap:break-word}.message-item:not(.bot-message) .message-text[data-v-23dd8b18]{background-color:#8080801a;padding:8px 12px;border-radius:12px 12px 12px 4px;display:inline-block;max-width:80%}.message-input[data-v-23dd8b18]{display:flex;flex-direction:column;padding:12px 16px 16px;border-top:1px solid rgba(128,128,128,.2);background:transparent;flex-shrink:0;position:sticky;bottom:0;margin-top:-10px}.input-row[data-v-23dd8b18]{display:flex;gap:8px;align-items:center}.floating-scroll-button[data-v-23dd8b18]{position:absolute;right:24px;bottom:18%;width:48px;height:48px;background:#2196f3;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 12px #2196f34d;color:#fff;transition:all .3s ease;z-index:100;border:2px solid rgba(255,255,255,.2)}.floating-scroll-button[data-v-23dd8b18]:hover{background:#1976d2;transform:scale(1.1);box-shadow:0 6px 16px #2196f366}.floating-scroll-button[data-v-23dd8b18]:active{transform:scale(.95)}.input-row button[data-v-23dd8b18]{padding:8px 16px;background:#2196f3;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s}.message-image-container[data-v-23dd8b18]{margin:8px 0;max-width:100%;display:block}.message-image[data-v-23dd8b18]{border-radius:8px;object-fit:contain;display:block;cursor:pointer;transition:transform .2s ease}.message-image-loading[data-v-23dd8b18]{display:inline-block;padding:8px 12px;background:#8080801a;border-radius:4px;color:currentColor;opacity:.7;font-size:12px}.message-image-error[data-v-23dd8b18]{display:inline-block;padding:8px 12px;background:#f443361a;border:1px solid rgba(244,67,54,.3);border-radius:4px;color:#f44336;font-size:12px;max-width:300px;word-break:break-word}.message-at[data-v-23dd8b18]{background:#2196f31a;color:#2196f3;padding:2px 4px;border-radius:3px;font-weight:500;cursor:pointer}.message-unknown[data-v-23dd8b18]{background:#ff98001a;color:#ff9800;padding:2px 4px;border-radius:3px;font-style:italic;cursor:help}.input-row input[data-v-23dd8b18]{flex:1;min-width:0;padding:8px 12px;border:1px solid rgba(128,128,128,.3);border-radius:4px;outline:none;background:transparent;color:currentColor}.input-row input[data-v-23dd8b18]:focus{border-color:#2196f3;box-shadow:0 0 0 2px #2196f333}.input-row input[data-v-23dd8b18]::placeholder{color:currentColor;opacity:.5}.input-row button[data-v-23dd8b18]{padding:8px 16px;background:#2196f3;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s;flex-shrink:0;white-space:nowrap}.input-row button[data-v-23dd8b18]:hover:not(:disabled){background:#1976d2}.input-row button[data-v-23dd8b18]:disabled{background:#8080804d;cursor:not-allowed}.input-row button.is-sending[data-v-23dd8b18]{background:#ffc107!important;color:#333!important;cursor:default!important}.message-input .input-row button.is-sending[data-v-23dd8b18]{background:#ffc107!important;color:#333!important;cursor:default!important;border-color:#ffc107!important}.empty-state[data-v-23dd8b18]{display:flex;align-items:center;justify-content:center;height:100%;color:currentColor;opacity:.5;font-size:14px}.message-text-content[data-v-23dd8b18]{display:inline}.message-image-container[data-v-23dd8b18]{display:block;margin:4px 0}.message-image[data-v-23dd8b18]{border-radius:8px;margin:4px 0;display:block;cursor:pointer;transition:transform .2s ease;object-fit:contain;background:#8080801a}.message-image[data-v-23dd8b18]:hover{transform:scale(1.02)}.message-image-loading[data-v-23dd8b18]{height:60px;width:200px;border-radius:8px;margin:4px 0;display:flex;align-items:center;justify-content:center;background:#8080801a;color:currentColor;opacity:.7;font-size:14px;border:1px dashed rgba(128,128,128,.3)}.message-image-error[data-v-23dd8b18]{min-height:60px;width:200px;border-radius:8px;margin:4px 0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#8080801a;color:currentColor;opacity:.7;font-size:14px;border:1px dashed rgba(128,128,128,.3);padding:8px;text-align:center}.message-at[data-v-23dd8b18]{background:#2196f31a;color:#2196f3;padding:2px 6px;border-radius:4px;font-weight:500;cursor:pointer;display:inline-block;margin:0 2px}.message-at[data-v-23dd8b18]:hover{background:#2196f333}.message-unknown[data-v-23dd8b18]{background:#ff98001a;color:#ff9800;padding:2px 6px;border-radius:4px;font-size:12px;display:inline-block;margin:0 2px;cursor:help}@keyframes pulse-23dd8b18{0%,to{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.1)}}.channel-message-count.will-delete[data-v-23dd8b18]{background:#f44336!important;animation:shake-23dd8b18 .3s ease-in-out infinite}@keyframes shake-23dd8b18{0%,to{transform:translate(0)}25%{transform:translate(-2px)}75%{transform:translate(2px)}}body.dragging-bubble-global[data-v-23dd8b18]{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;cursor:grabbing}.drag-threshold-circle[data-v-23dd8b18]{position:fixed;pointer-events:none;border:3px dashed rgba(244,67,54,.8);border-radius:50%;z-index:999;background:#f443361a;box-shadow:0 0 20px #f443364d;animation:pulseThreshold-23dd8b18 1.5s ease-in-out infinite}.context-menu[data-v-23dd8b18]{position:fixed;background:#ffffffa6;border:1px solid rgba(0,0,0,.1);border-radius:8px;box-shadow:0 8px 32px #00000026;z-index:10000;min-width:180px;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);overflow:hidden}.context-menu-item[data-v-23dd8b18]{padding:12px 16px;cursor:pointer;color:#333;font-size:14px;font-weight:500;transition:all .2s ease;border-bottom:1px solid rgba(0,0,0,.08);position:relative}.context-menu-item[data-v-23dd8b18]:last-child{border-bottom:none}.context-menu-item[data-v-23dd8b18]:hover{background:#2196f31a;color:#1976d2;transform:translate(2px)}.context-menu-item.danger[data-v-23dd8b18]{color:#d32f2f}.context-menu-item.danger[data-v-23dd8b18]:hover{background:#f443361a;color:#c62828}.bot-item.pinned[data-v-23dd8b18],.channel-item.pinned[data-v-23dd8b18]{background:#ffc1071a;border-left:3px solid #ffc107}.bot-item.pinned[data-v-23dd8b18]:before,.channel-item.pinned[data-v-23dd8b18]:before{content:"📌";position:absolute;left:4px;top:50%;transform:translateY(-50%);font-size:12px;opacity:.7}.bot-item.pinned[data-v-23dd8b18],.channel-item.pinned[data-v-23dd8b18]{position:relative;padding-left:24px}@media (prefers-color-scheme: dark){.context-menu[data-v-23dd8b18]{background:#ffffff26;border-color:#fff3;box-shadow:0 8px 32px #0006}.context-menu-item[data-v-23dd8b18]{color:#fff;border-bottom-color:#ffffff1a}.context-menu-item[data-v-23dd8b18]:hover{background:#2196f333;color:#64b5f6}.context-menu-item.danger[data-v-23dd8b18]{color:#ff8a80}.context-menu-item.danger[data-v-23dd8b18]:hover{background:#f4433633;color:#ffab91}.bot-item.pinned[data-v-23dd8b18],.channel-item.pinned[data-v-23dd8b18]{background:#ffc10726}}.message-share-card[data-v-23dd8b18]{display:inline-block;width:75px;margin:8px 0;border:1px solid rgba(128,128,128,.2);border-radius:12px;background:#ffffff0d;transition:all .3s ease;cursor:pointer;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.message-share-card[data-v-23dd8b18]:hover{transform:translateY(-2px);box-shadow:0 8px 24px #00000026;border-color:#2196f34d}.share-card-preview[data-v-23dd8b18]{width:100%;position:relative;display:flex;align-items:center;justify-content:center;padding:4px;border-radius:12px 12px 0 0}.share-card-image[data-v-23dd8b18]{max-width:calc(100% - 8px);width:auto;height:auto;object-fit:contain;transition:transform .3s ease;display:block;border-radius:4px}.message-share-card:hover .share-card-image[data-v-23dd8b18]{transform:scale(1.05)}.share-card-content[data-v-23dd8b18]{padding:8px}.share-card-header[data-v-23dd8b18]{display:flex;align-items:center;margin-bottom:12px;gap:12px}.share-card-icon[data-v-23dd8b18]{width:32px;height:32px;border-radius:8px;object-fit:cover;flex-shrink:0}.share-card-app-info[data-v-23dd8b18]{flex:1;min-width:0}.share-card-app-name[data-v-23dd8b18]{font-size:12px;color:currentColor;opacity:.7;margin-bottom:2px;font-weight:500}.share-card-title[data-v-23dd8b18]{font-size:10px;font-weight:600;color:currentColor;line-height:1.2;word-wrap:break-word;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.share-card-desc[data-v-23dd8b18]{font-size:14px;color:currentColor;opacity:.8;line-height:1.4;margin-bottom:12px;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;word-wrap:break-word}.share-card-link-hint[data-v-23dd8b18]{font-size:12px;color:#2196f3;font-weight:500;display:flex;align-items:center;gap:4px}.share-card-link-hint[data-v-23dd8b18]:after{content:"→";transition:transform .2s ease}.message-share-card:hover .share-card-link-hint[data-v-23dd8b18]:after{transform:translate(2px)}.message-json-error[data-v-23dd8b18],.message-json-raw[data-v-23dd8b18]{display:inline-block;margin:8px 0;max-width:400px}.json-error-text[data-v-23dd8b18]{color:#f44336;font-size:14px;font-weight:500}.json-label[data-v-23dd8b18]{color:currentColor;opacity:.7;font-size:12px;font-weight:500;margin-bottom:8px}.json-raw-data[data-v-23dd8b18]{margin-top:8px}.json-raw-data summary[data-v-23dd8b18]{cursor:pointer;font-size:12px;color:#2196f3;font-weight:500;padding:4px 8px;border-radius:4px;background:#2196f31a;display:inline-block;transition:background-color .2s ease}.json-raw-data summary[data-v-23dd8b18]:hover{background:#2196f333}.json-raw-content[data-v-23dd8b18]{margin-top:8px;padding:12px;background:#8080801a;border-radius:8px;font-family:Courier New,monospace;font-size:12px;color:currentColor;opacity:.8;white-space:pre-wrap;word-wrap:break-word;max-height:200px;overflow-y:auto;border:1px solid rgba(128,128,128,.2)}@media (prefers-color-scheme: dark){.message-share-card[data-v-23dd8b18]{background:#ffffff14;border-color:#ffffff26}.message-share-card[data-v-23dd8b18]:hover{border-color:#2196f380;box-shadow:0 8px 24px #0000004d}.json-raw-content[data-v-23dd8b18]{background:#ffffff0d;border-color:#ffffff1a}}@media (max-width: 768px){.chat-container[data-v-23dd8b18]{position:relative}.bot-list[data-v-23dd8b18],.channel-list[data-v-23dd8b18],.message-area[data-v-23dd8b18]{position:absolute;top:0;left:0;width:100%;height:100%;transition:transform .3s ease;z-index:1}.bot-list[data-v-23dd8b18]{transform:translate(0);z-index:3}.channel-list[data-v-23dd8b18]{transform:translate(100%);z-index:2}.message-area[data-v-23dd8b18]{transform:translate(200%);z-index:1}.chat-container.show-channels .bot-list[data-v-23dd8b18]{transform:translate(-100%)}.chat-container.show-channels .channel-list[data-v-23dd8b18]{transform:translate(0);z-index:3}.chat-container.show-channels .message-area[data-v-23dd8b18]{transform:translate(100%)}.chat-container.show-messages .bot-list[data-v-23dd8b18]{transform:translate(-200%)}.chat-container.show-messages .channel-list[data-v-23dd8b18]{transform:translate(-100%)}.chat-container.show-messages .message-area[data-v-23dd8b18]{transform:translate(0);z-index:3}.back-button[data-v-23dd8b18]{display:none!important}.panel-header[data-v-23dd8b18]{flex-direction:row-reverse;position:sticky;top:0;z-index:5;background:inherit}.panel-header h3[data-v-23dd8b18]{text-align:right}.floating-scroll-button[data-v-23dd8b18]{right:16px;bottom:70px;width:40px;height:40px}.message-input[data-v-23dd8b18]{padding:8px 12px 12px;position:fixed;bottom:0;left:0;right:0;background:inherit;border-top:1px solid rgba(128,128,128,.2);z-index:10}.input-row input[data-v-23dd8b18]{font-size:16px;padding:10px 12px}.input-row button[data-v-23dd8b18]{padding:10px 16px;font-size:16px}.message-history[data-v-23dd8b18]{padding:12px 12px 80px;max-height:calc(100vh - 140px)}.message-item[data-v-23dd8b18]{margin-bottom:12px;padding:6px}.message-avatar[data-v-23dd8b18]{width:28px;height:28px;margin-right:8px}.message-item.bot-message .message-avatar[data-v-23dd8b18]{margin-left:8px}.message-image[data-v-23dd8b18]{max-width:280px;max-height:160px}.quote-content .message-image[data-v-23dd8b18]{max-width:150px;max-height:80px}.context-menu[data-v-23dd8b18]{min-width:160px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.context-menu-item[data-v-23dd8b18]{padding:14px 16px;font-size:16px}.bot-item[data-v-23dd8b18],.channel-item[data-v-23dd8b18]{padding:14px 16px}.bot-avatar[data-v-23dd8b18]{width:36px;height:36px;margin-right:10px}.bot-name[data-v-23dd8b18],.channel-name[data-v-23dd8b18]{font-size:15px}.bot-platform[data-v-23dd8b18],.channel-type[data-v-23dd8b18]{font-size:13px}}@media (min-width: 769px) and (max-width: 1024px){.bot-list[data-v-23dd8b18]{width:220px;min-width:220px;max-width:220px}.channel-list[data-v-23dd8b18]{width:280px;min-width:280px;max-width:280px}.message-image[data-v-23dd8b18]{max-width:350px;max-height:180px}}.chat-container.swiping[data-v-23dd8b18]{overflow:hidden}.bot-list.swiping[data-v-23dd8b18],.channel-list.swiping[data-v-23dd8b18],.message-area.swiping[data-v-23dd8b18]{transition:none!important}.swipe-indicator[data-v-23dd8b18]{position:fixed;top:50%;left:20px;transform:translateY(-50%);background:#2196f3cc;color:#fff;padding:8px 12px;border-radius:20px;font-size:14px;z-index:1000;opacity:0;transition:opacity .2s ease;pointer-events:none;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.swipe-indicator.show[data-v-23dd8b18]{opacity:1}.message-area .message-content[data-v-23dd8b18]{padding-bottom:80px}.layout-iframe{width:100%;height:100%;border:none}
|
|
1
|
+
.message-quote[data-v-fc970c70]{margin:8px 0;padding:8px 12px;background-color:#bebebe1a;border-left:4px solid rgba(151,152,152,.45);border-radius:6px;font-size:.9em;position:relative}.quote-indicator[data-v-fc970c70]{font-size:.75em;color:#007bff;font-weight:600;margin-bottom:4px;text-transform:uppercase}.quote-header[data-v-fc970c70]{display:flex;align-items:center;margin-bottom:4px;gap:6px}.quote-avatar[data-v-fc970c70]{width:20px;height:20px;border-radius:50%;overflow:hidden;flex-shrink:0}.quote-avatar img[data-v-fc970c70]{width:100%;height:100%;object-fit:cover}.quote-avatar .avatar-placeholder[data-v-fc970c70]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#6c757d;color:#fff;font-size:10px;font-weight:700}.quote-username[data-v-fc970c70]{font-weight:600;color:#007bff;font-size:.85em}.quote-time[data-v-fc970c70]{color:#6c757d;font-size:.75em;margin-left:auto}.quote-content[data-v-fc970c70]{color:#7276b7;line-height:1.3;word-wrap:break-word}.quote-content .message-image[data-v-fc970c70]{max-width:200px;max-height:100px}.quote-content .message-image-container[data-v-fc970c70]{margin:2px 0}@media (prefers-color-scheme: dark){.message-quote[data-v-fc970c70]{background-color:#ffffff14;border-left-color:#0d6efd}.quote-content[data-v-fc970c70]{color:#adb5bd}.quote-username[data-v-fc970c70]{color:#0d6efd}}.chat-container[data-v-fc970c70]{display:flex;height:100vh;background:transparent;margin-left:0%;width:100%;overflow:hidden;color:inherit;position:relative}.bot-list[data-v-fc970c70],.channel-list[data-v-fc970c70],.message-area[data-v-fc970c70]{display:flex;flex-direction:column;background:transparent;border-right:1px solid rgba(128,128,128,.2)}.bot-list[data-v-fc970c70]{width:250px;min-width:250px;max-width:250px;flex-shrink:0}.channel-list[data-v-fc970c70]{width:300px;min-width:300px;max-width:300px;flex-shrink:0}.message-area[data-v-fc970c70]{flex:1;border-right:none}.panel-header[data-v-fc970c70]{padding:16px;border-bottom:1px solid rgba(128,128,128,.2);background:transparent;display:flex;align-items:center;justify-content:space-between}.panel-header h3[data-v-fc970c70]{margin:0;font-size:16px;font-weight:600;color:currentColor}.back-button[data-v-fc970c70]{display:none;background:none;border:none;color:currentColor;font-size:18px;cursor:pointer;padding:4px 8px;border-radius:4px;transition:background-color .2s}.back-button[data-v-fc970c70]:hover{background:#8080801a}.bot-items[data-v-fc970c70],.channel-items[data-v-fc970c70]{flex:1;overflow-y:auto;max-height:calc(100vh - 60px)}.bot-item[data-v-fc970c70],.channel-item[data-v-fc970c70]{display:flex;align-items:center;padding:12px 16px;cursor:pointer;border-bottom:1px solid rgba(128,128,128,.1);transition:background-color .2s}.bot-item[data-v-fc970c70]:hover,.channel-item[data-v-fc970c70]:hover{background:#8080801a}.bot-item.active[data-v-fc970c70],.channel-item.active[data-v-fc970c70]{background:#2196f31a;border-right:3px solid #2196f3}.bot-avatar[data-v-fc970c70]{width:40px;height:40px;margin-right:12px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#e0e0e0}.bot-avatar img[data-v-fc970c70]{width:100%;height:100%;object-fit:cover}.avatar-placeholder[data-v-fc970c70]{font-size:16px;font-weight:700;color:currentColor;opacity:.7}.bot-info[data-v-fc970c70]{flex:1}.bot-name[data-v-fc970c70]{font-weight:500;color:currentColor;margin-bottom:2px}.bot-platform[data-v-fc970c70]{font-size:12px;color:currentColor;opacity:.7}.bot-status[data-v-fc970c70]{width:8px;height:8px;border-radius:50%;margin-left:8px}.bot-status.online[data-v-fc970c70]{background:#4caf50}.bot-status.offline[data-v-fc970c70]{background:#f44336}.channel-info[data-v-fc970c70]{flex:1}.channel-name[data-v-fc970c70]{font-weight:500;color:currentColor;margin-bottom:2px}.channel-type[data-v-fc970c70]{font-size:12px;color:currentColor;opacity:.7}.channel-message-count[data-v-fc970c70]{background:#2196f3;color:#fff;font-size:12px;padding:2px 6px;border-radius:10px;min-width:18px;text-align:center;position:relative;transition:all .2s ease}.channel-message-count.draggable-bubble[data-v-fc970c70]{cursor:grab;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.channel-message-count.draggable-bubble[data-v-fc970c70]:hover{background:#1976d2;transform:scale(1.1);box-shadow:0 2px 8px #2196f34d}.channel-message-count.draggable-bubble[data-v-fc970c70]:active,.channel-message-count.draggable-bubble.dragging[data-v-fc970c70]{cursor:grabbing;background:#1565c0;box-shadow:0 4px 12px #2196f366}.dragging-clone[data-v-fc970c70]{position:fixed;z-index:1000;pointer-events:none;transition:none;box-sizing:border-box;display:flex;align-items:center;justify-content:center;background:#2196f3;color:#fff;font-size:12px;padding:2px 6px;border-radius:10px;min-width:18px;text-align:center;box-shadow:0 4px 12px #2196f366}.dragging-clone.will-delete[data-v-fc970c70]{background:#f44336!important;animation:shake-fc970c70 .3s ease-in-out infinite}@keyframes pulseThreshold-fc970c70{0%,to{opacity:.4;transform:scale(.9);border-color:#f4433699;box-shadow:0 0 15px #f4433633}50%{opacity:.8;transform:scale(1.1);border-color:#f44336;box-shadow:0 0 25px #f4433666}}@keyframes menuSlideIn-fc970c70{0%{transform:translateY(8px);opacity:0}to{transform:translateY(0);opacity:1}}.message-content[data-v-fc970c70]{display:flex;flex-direction:column;height:calc(100vh - 60px);overflow:hidden;position:relative}.message-history[data-v-fc970c70]{flex:1;overflow-y:auto;padding:16px 16px 8px;max-height:calc(100vh - 200px)}.message-item[data-v-fc970c70]{display:flex;margin-bottom:16px;padding:8px;border-radius:8px;transition:background-color .3s ease}.message-item[data-v-fc970c70]:hover{background-color:#8080801a}.message-item.new-message[data-v-fc970c70]{background-color:#4caf5033;animation:highlight-fc970c70 2s ease-out}.message-item.bot-message[data-v-fc970c70]{flex-direction:row-reverse;justify-content:flex-start}.message-item.bot-message .message-avatar[data-v-fc970c70]{margin-right:0;margin-left:12px}.message-item.bot-message .message-content-wrapper[data-v-fc970c70]{display:flex;flex-direction:column;align-items:flex-end}.message-item.bot-message .message-header[data-v-fc970c70]{display:flex;align-items:center;justify-content:flex-end;margin-bottom:4px}.message-item.bot-message .message-username[data-v-fc970c70]{margin-right:0;margin-left:8px;order:2}.message-item.bot-message .message-time[data-v-fc970c70]{order:1}.message-item.bot-message .message-text[data-v-fc970c70]{background-color:#2196f31a;padding:8px 12px;border-radius:12px 12px 4px;display:inline-block;max-width:80%;text-align:left}@keyframes highlight-fc970c70{0%{background-color:#4caf504d}to{background-color:transparent}}.message-avatar[data-v-fc970c70]{width:32px;height:32px;margin-right:12px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#e0e0e0;flex-shrink:0}.message-avatar img[data-v-fc970c70]{width:100%;height:100%;object-fit:cover}.message-avatar .avatar-placeholder[data-v-fc970c70]{font-size:12px;font-weight:700;color:currentColor;opacity:.7}.message-content-wrapper[data-v-fc970c70]{flex:1}.message-header[data-v-fc970c70]{display:flex;align-items:center;margin-bottom:4px}.message-username[data-v-fc970c70]{font-weight:500;color:currentColor;margin-right:8px}.message-time[data-v-fc970c70]{font-size:12px;color:currentColor;opacity:.5}.message-text[data-v-fc970c70]{color:currentColor;line-height:1.4;word-wrap:break-word;word-break:break-word;white-space:pre-wrap;max-width:100%;overflow-wrap:break-word}.message-item:not(.bot-message) .message-text[data-v-fc970c70]{background-color:#8080801a;padding:8px 12px;border-radius:12px 12px 12px 4px;display:inline-block;max-width:80%}.message-input[data-v-fc970c70]{display:flex;flex-direction:column;padding:12px 16px 16px;border-top:1px solid rgba(128,128,128,.2);background:transparent;flex-shrink:0;position:sticky;bottom:0;margin-top:-10px}.input-row[data-v-fc970c70]{display:flex;gap:8px;align-items:center}.floating-scroll-button[data-v-fc970c70]{position:absolute;right:24px;bottom:18%;width:48px;height:48px;background:#2196f3;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 12px #2196f34d;color:#fff;transition:all .3s ease;z-index:100;border:2px solid rgba(255,255,255,.2)}.floating-scroll-button[data-v-fc970c70]:hover{background:#1976d2;transform:scale(1.1);box-shadow:0 6px 16px #2196f366}.floating-scroll-button[data-v-fc970c70]:active{transform:scale(.95)}.input-row button[data-v-fc970c70]{padding:8px 16px;background:#2196f3;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s}.message-image-container[data-v-fc970c70]{margin:8px 0;max-width:100%;display:block}.message-image[data-v-fc970c70]{border-radius:8px;object-fit:contain;display:block;cursor:pointer;transition:transform .2s ease}.message-image-loading[data-v-fc970c70]{display:inline-block;padding:8px 12px;background:#8080801a;border-radius:4px;color:currentColor;opacity:.7;font-size:12px}.message-image-error[data-v-fc970c70]{display:inline-block;padding:8px 12px;background:#f443361a;border:1px solid rgba(244,67,54,.3);border-radius:4px;color:#f44336;font-size:12px;max-width:300px;word-break:break-word}.message-paragraph[data-v-fc970c70]{display:block;margin-bottom:4px}.message-paragraph[data-v-fc970c70]:last-child{margin-bottom:0}.forward-message-container[data-v-fc970c70]{border:1px solid #ffffff;border-radius:8px;margin:4px 0;overflow:hidden;background:#f9f9f900}.forward-message-preview[data-v-fc970c70]{padding:12px;cursor:pointer;transition:background-color .2s}.forward-message-preview[data-v-fc970c70]:hover{background:#f0f0f0}.forward-message-title[data-v-fc970c70]{font-weight:600;color:#333;margin-bottom:8px;font-size:14px}.forward-message-preview-item[data-v-fc970c70]{color:#666;font-size:13px;margin:2px 0;line-height:1.4}.forward-message-footer[data-v-fc970c70]{display:flex;justify-content:space-between;align-items:center;margin-top:8px;padding-top:8px;border-top:1px solid #e8e8e8}.forward-message-count[data-v-fc970c70]{color:#2196f3;font-size:12px}.forward-message-toggle[data-v-fc970c70]{color:#666;font-size:12px}.forward-message-expanded[data-v-fc970c70]{border-top:1px solid #e0e0e0;background:#fff;max-height:400px;overflow-y:auto}.forwarded-message-item[data-v-fc970c70]{padding:12px;border-bottom:1px solid #f0f0f0}.forwarded-message-item[data-v-fc970c70]:last-child{border-bottom:none}.forwarded-message-header[data-v-fc970c70]{display:flex;align-items:center;margin-bottom:6px}.forwarded-message-nickname[data-v-fc970c70]{font-weight:600;color:#333;font-size:13px}.forwarded-message-userid[data-v-fc970c70]{color:#999;font-size:11px;margin-left:6px}.forwarded-message-content[data-v-fc970c70]{color:#555;font-size:13px;line-height:1.4}.message-at[data-v-fc970c70]{background:#2196f31a;color:#2196f3;padding:2px 4px;border-radius:3px;font-weight:500;cursor:pointer}.message-unknown[data-v-fc970c70]{background:#ff98001a;color:#ff9800;padding:2px 4px;border-radius:3px;font-style:italic;cursor:help}.input-row input[data-v-fc970c70]{flex:1;min-width:0;padding:8px 12px;border:1px solid rgba(128,128,128,.3);border-radius:4px;outline:none;background:transparent;color:currentColor}.input-row input[data-v-fc970c70]:focus{border-color:#2196f3;box-shadow:0 0 0 2px #2196f333}.input-row input[data-v-fc970c70]::placeholder{color:currentColor;opacity:.5}.input-row button[data-v-fc970c70]{padding:8px 16px;background:#2196f3;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s;flex-shrink:0;white-space:nowrap}.input-row button[data-v-fc970c70]:hover:not(:disabled){background:#1976d2}.input-row button[data-v-fc970c70]:disabled{background:#8080804d;cursor:not-allowed}.input-row button.is-sending[data-v-fc970c70]{background:#ffc107!important;color:#333!important;cursor:default!important}.message-input .input-row button.is-sending[data-v-fc970c70]{background:#ffc107!important;color:#333!important;cursor:default!important;border-color:#ffc107!important}.empty-state[data-v-fc970c70]{display:flex;align-items:center;justify-content:center;height:100%;color:currentColor;opacity:.5;font-size:14px}.message-text-content[data-v-fc970c70]{display:inline}.message-image-container[data-v-fc970c70]{display:block;margin:4px 0}.message-image[data-v-fc970c70]{border-radius:8px;margin:4px 0;display:block;cursor:pointer;transition:transform .2s ease;object-fit:contain;background:#8080801a}.message-image[data-v-fc970c70]:hover{transform:scale(1.02)}.message-image-loading[data-v-fc970c70]{height:60px;width:200px;border-radius:8px;margin:4px 0;display:flex;align-items:center;justify-content:center;background:#8080801a;color:currentColor;opacity:.7;font-size:14px;border:1px dashed rgba(128,128,128,.3)}.message-image-error[data-v-fc970c70]{min-height:60px;width:200px;border-radius:8px;margin:4px 0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#8080801a;color:currentColor;opacity:.7;font-size:14px;border:1px dashed rgba(128,128,128,.3);padding:8px;text-align:center}.message-at[data-v-fc970c70]{background:#2196f31a;color:#2196f3;padding:2px 6px;border-radius:4px;font-weight:500;cursor:pointer;display:inline-block;margin:0 2px}.message-at[data-v-fc970c70]:hover{background:#2196f333}.message-unknown[data-v-fc970c70]{background:#ff98001a;color:#ff9800;padding:2px 6px;border-radius:4px;font-size:12px;display:inline-block;margin:0 2px;cursor:help}@keyframes pulse-fc970c70{0%,to{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.1)}}.channel-message-count.will-delete[data-v-fc970c70]{background:#f44336!important;animation:shake-fc970c70 .3s ease-in-out infinite}@keyframes shake-fc970c70{0%,to{transform:translate(0)}25%{transform:translate(-2px)}75%{transform:translate(2px)}}body.dragging-bubble-global[data-v-fc970c70]{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;cursor:grabbing}.drag-threshold-circle[data-v-fc970c70]{position:fixed;pointer-events:none;border:3px dashed rgba(244,67,54,.8);border-radius:50%;z-index:999;background:#f443361a;box-shadow:0 0 20px #f443364d;animation:pulseThreshold-fc970c70 1.5s ease-in-out infinite}.context-menu[data-v-fc970c70]{position:fixed;background:#ffffffa6;border:1px solid rgba(0,0,0,.1);border-radius:8px;box-shadow:0 8px 32px #00000026;z-index:10000;min-width:180px;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);overflow:hidden}.context-menu-item[data-v-fc970c70]{padding:12px 16px;cursor:pointer;color:#333;font-size:14px;font-weight:500;transition:all .2s ease;border-bottom:1px solid rgba(0,0,0,.08);position:relative}.context-menu-item[data-v-fc970c70]:last-child{border-bottom:none}.context-menu-item[data-v-fc970c70]:hover{background:#2196f31a;color:#1976d2;transform:translate(2px)}.context-menu-item.danger[data-v-fc970c70]{color:#d32f2f}.context-menu-item.danger[data-v-fc970c70]:hover{background:#f443361a;color:#c62828}.bot-item.pinned[data-v-fc970c70],.channel-item.pinned[data-v-fc970c70]{background:#ffc1071a;border-left:3px solid #ffc107}.bot-item.pinned[data-v-fc970c70]:before,.channel-item.pinned[data-v-fc970c70]:before{content:"📌";position:absolute;left:4px;top:50%;transform:translateY(-50%);font-size:12px;opacity:.7}.bot-item.pinned[data-v-fc970c70],.channel-item.pinned[data-v-fc970c70]{position:relative;padding-left:24px}@media (prefers-color-scheme: dark){.context-menu[data-v-fc970c70]{background:#ffffff26;border-color:#fff3;box-shadow:0 8px 32px #0006}.context-menu-item[data-v-fc970c70]{color:#fff;border-bottom-color:#ffffff1a}.context-menu-item[data-v-fc970c70]:hover{background:#2196f333;color:#64b5f6}.context-menu-item.danger[data-v-fc970c70]{color:#ff8a80}.context-menu-item.danger[data-v-fc970c70]:hover{background:#f4433633;color:#ffab91}.bot-item.pinned[data-v-fc970c70],.channel-item.pinned[data-v-fc970c70]{background:#ffc10726}}.message-share-card[data-v-fc970c70]{display:inline-block;width:75px;margin:8px 0;border:1px solid rgba(128,128,128,.2);border-radius:12px;background:#ffffff0d;transition:all .3s ease;cursor:pointer;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.message-share-card[data-v-fc970c70]:hover{transform:translateY(-2px);box-shadow:0 8px 24px #00000026;border-color:#2196f34d}.share-card-preview[data-v-fc970c70]{width:100%;position:relative;display:flex;align-items:center;justify-content:center;padding:4px;border-radius:12px 12px 0 0}.share-card-image[data-v-fc970c70]{max-width:calc(100% - 8px);width:auto;height:auto;object-fit:contain;transition:transform .3s ease;display:block;border-radius:4px}.message-share-card:hover .share-card-image[data-v-fc970c70]{transform:scale(1.05)}.share-card-content[data-v-fc970c70]{padding:8px}.share-card-header[data-v-fc970c70]{display:flex;align-items:center;margin-bottom:12px;gap:12px}.share-card-icon[data-v-fc970c70]{width:32px;height:32px;border-radius:8px;object-fit:cover;flex-shrink:0}.share-card-app-info[data-v-fc970c70]{flex:1;min-width:0}.share-card-app-name[data-v-fc970c70]{font-size:12px;color:currentColor;opacity:.7;margin-bottom:2px;font-weight:500}.share-card-title[data-v-fc970c70]{font-size:10px;font-weight:600;color:currentColor;line-height:1.2;word-wrap:break-word;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.share-card-desc[data-v-fc970c70]{font-size:14px;color:currentColor;opacity:.8;line-height:1.4;margin-bottom:12px;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;word-wrap:break-word}.share-card-link-hint[data-v-fc970c70]{font-size:12px;color:#2196f3;font-weight:500;display:flex;align-items:center;gap:4px}.share-card-link-hint[data-v-fc970c70]:after{content:"→";transition:transform .2s ease}.message-share-card:hover .share-card-link-hint[data-v-fc970c70]:after{transform:translate(2px)}.message-json-error[data-v-fc970c70],.message-json-raw[data-v-fc970c70]{display:inline-block;margin:8px 0;max-width:400px}.json-error-text[data-v-fc970c70]{color:#f44336;font-size:14px;font-weight:500}.json-label[data-v-fc970c70]{color:currentColor;opacity:.7;font-size:12px;font-weight:500;margin-bottom:8px}.json-raw-data[data-v-fc970c70]{margin-top:8px}.json-raw-data summary[data-v-fc970c70]{cursor:pointer;font-size:12px;color:#2196f3;font-weight:500;padding:4px 8px;border-radius:4px;background:#2196f31a;display:inline-block;transition:background-color .2s ease}.json-raw-data summary[data-v-fc970c70]:hover{background:#2196f333}.json-raw-content[data-v-fc970c70]{margin-top:8px;padding:12px;background:#8080801a;border-radius:8px;font-family:Courier New,monospace;font-size:12px;color:currentColor;opacity:.8;white-space:pre-wrap;word-wrap:break-word;max-height:200px;overflow-y:auto;border:1px solid rgba(128,128,128,.2)}@media (prefers-color-scheme: dark){.message-share-card[data-v-fc970c70]{background:#ffffff14;border-color:#ffffff26}.message-share-card[data-v-fc970c70]:hover{border-color:#2196f380;box-shadow:0 8px 24px #0000004d}.json-raw-content[data-v-fc970c70]{background:#ffffff0d;border-color:#ffffff1a}}@media (max-width: 768px){.chat-container[data-v-fc970c70]{position:relative}.bot-list[data-v-fc970c70],.channel-list[data-v-fc970c70],.message-area[data-v-fc970c70]{position:absolute;top:0;left:0;width:100%;height:100%;transition:transform .3s ease;z-index:1}.bot-list[data-v-fc970c70]{transform:translate(0);z-index:3}.channel-list[data-v-fc970c70]{transform:translate(100%);z-index:2}.message-area[data-v-fc970c70]{transform:translate(200%);z-index:1}.chat-container.show-channels .bot-list[data-v-fc970c70]{transform:translate(-100%)}.chat-container.show-channels .channel-list[data-v-fc970c70]{transform:translate(0);z-index:3}.chat-container.show-channels .message-area[data-v-fc970c70]{transform:translate(100%)}.chat-container.show-messages .bot-list[data-v-fc970c70]{transform:translate(-200%)}.chat-container.show-messages .channel-list[data-v-fc970c70]{transform:translate(-100%)}.chat-container.show-messages .message-area[data-v-fc970c70]{transform:translate(0);z-index:3}.back-button[data-v-fc970c70]{display:none!important}.panel-header[data-v-fc970c70]{flex-direction:row-reverse;position:sticky;top:0;z-index:5;background:inherit}.panel-header h3[data-v-fc970c70]{text-align:right}.floating-scroll-button[data-v-fc970c70]{right:16px;bottom:70px;width:40px;height:40px}.message-input[data-v-fc970c70]{padding:8px 12px 12px;position:fixed;bottom:0;left:0;right:0;background:inherit;border-top:1px solid rgba(128,128,128,.2);z-index:10}.input-row input[data-v-fc970c70]{font-size:16px;padding:10px 12px}.input-row button[data-v-fc970c70]{padding:10px 16px;font-size:16px}.message-history[data-v-fc970c70]{padding:12px 12px 80px;max-height:calc(100vh - 140px)}.message-item[data-v-fc970c70]{margin-bottom:12px;padding:6px}.message-avatar[data-v-fc970c70]{width:28px;height:28px;margin-right:8px}.message-item.bot-message .message-avatar[data-v-fc970c70]{margin-left:8px}.message-image[data-v-fc970c70]{max-width:280px;max-height:160px}.quote-content .message-image[data-v-fc970c70]{max-width:150px;max-height:80px}.context-menu[data-v-fc970c70]{min-width:160px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.context-menu-item[data-v-fc970c70]{padding:14px 16px;font-size:16px}.bot-item[data-v-fc970c70],.channel-item[data-v-fc970c70]{padding:14px 16px}.bot-avatar[data-v-fc970c70]{width:36px;height:36px;margin-right:10px}.bot-name[data-v-fc970c70],.channel-name[data-v-fc970c70]{font-size:15px}.bot-platform[data-v-fc970c70],.channel-type[data-v-fc970c70]{font-size:13px}}@media (min-width: 769px) and (max-width: 1024px){.bot-list[data-v-fc970c70]{width:220px;min-width:220px;max-width:220px}.channel-list[data-v-fc970c70]{width:280px;min-width:280px;max-width:280px}.message-image[data-v-fc970c70]{max-width:350px;max-height:180px}}.chat-container.swiping[data-v-fc970c70]{overflow:hidden}.bot-list.swiping[data-v-fc970c70],.channel-list.swiping[data-v-fc970c70],.message-area.swiping[data-v-fc970c70]{transition:none!important}.swipe-indicator[data-v-fc970c70]{position:fixed;top:50%;left:20px;transform:translateY(-50%);background:#2196f3cc;color:#fff;padding:8px 12px;border-radius:20px;font-size:14px;z-index:1000;opacity:0;transition:opacity .2s ease;pointer-events:none;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.swipe-indicator.show[data-v-fc970c70]{opacity:1}.message-area .message-content[data-v-fc970c70]{padding-bottom:80px}.image-preview-container[data-v-fc970c70]{display:flex;flex-wrap:wrap;gap:8px;padding:8px 0;margin-bottom:8px;border-bottom:1px solid rgba(128,128,128,.1)}.image-preview-item[data-v-fc970c70]{position:relative;width:60px;height:60px;border-radius:8px;overflow:hidden;border:2px solid rgba(33,150,243,.3);background:#8080801a}.preview-image[data-v-fc970c70]{width:100%;height:100%;object-fit:cover;display:block}.remove-image-btn[data-v-fc970c70]{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;background:#f44336;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px;transition:all .2s ease;box-shadow:0 2px 4px #0003}.remove-image-btn[data-v-fc970c70]:hover{background:#d32f2f;transform:scale(1.1)}.input-actions[data-v-fc970c70]{position:relative;margin-right:8px}.add-button[data-v-fc970c70]{width:36px;height:36px;border-radius:12px;background:linear-gradient(135deg,#667eea,#764ba2);border:none;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s cubic-bezier(.4,0,.2,1);flex-shrink:0;box-shadow:0 2px 8px #667eea4d;position:relative;overflow:hidden}.add-button[data-v-fc970c70]:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(135deg,#fff3,#ffffff1a);border-radius:12px;opacity:0;transition:opacity .3s ease}.add-button[data-v-fc970c70]:hover{transform:translateY(-2px) scale(1.05);box-shadow:0 4px 16px #667eea66}.add-button[data-v-fc970c70]:hover:before{opacity:1}.add-button.active[data-v-fc970c70]{background:linear-gradient(135deg,#f093fb,#f5576c);transform:translateY(-2px) scale(1.05) rotate(45deg);box-shadow:0 4px 16px #f5576c66}.add-button[data-v-fc970c70]:active{transform:translateY(0) scale(.98);transition:all .1s ease}.action-menu[data-v-fc970c70]{position:absolute;bottom:100%;left:0;margin-bottom:12px;background:#fffffffa;border:none;border-radius:16px;box-shadow:0 8px 32px #0000001f,0 2px 8px #00000014;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);overflow:hidden;z-index:1000;min-width:140px;transform:translateY(8px);opacity:0;animation:menuSlideIn-fc970c70 .3s cubic-bezier(.4,0,.2,1) forwards}.action-menu-item[data-v-fc970c70]{display:flex;align-items:center;gap:12px;padding:14px 18px;background:none;border:none;color:#333;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);width:100%;text-align:left;position:relative}.action-menu-item[data-v-fc970c70]:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(135deg,#667eea,#764ba2);transform:scaleY(0);transition:transform .2s cubic-bezier(.4,0,.2,1)}.action-menu-item[data-v-fc970c70]:hover{background:linear-gradient(90deg,#667eea14,#764ba214);color:#667eea;transform:translate(4px)}.action-menu-item[data-v-fc970c70]:hover:before{transform:scaleY(1)}.action-menu-item svg[data-v-fc970c70]{flex-shrink:0}@media (prefers-color-scheme: dark){.action-menu[data-v-fc970c70]{background:#1e1e1efa;box-shadow:0 8px 32px #0000004d,0 2px 8px #0003}.action-menu-item[data-v-fc970c70]{color:#fff}.action-menu-item[data-v-fc970c70]:before{background:linear-gradient(135deg,#4facfe,#00f2fe)}.action-menu-item[data-v-fc970c70]:hover{background:linear-gradient(90deg,#4facfe1f,#00f2fe1f);color:#4facfe}.add-button[data-v-fc970c70]{background:linear-gradient(135deg,#4facfe,#00f2fe);box-shadow:0 2px 8px #4facfe4d}.add-button[data-v-fc970c70]:hover{box-shadow:0 4px 16px #4facfe66}.add-button.active[data-v-fc970c70]{background:linear-gradient(135deg,#fa709a,#fee140);box-shadow:0 4px 16px #fa709a66}.image-preview-item[data-v-fc970c70]{border-color:#64b5f680;background:#ffffff0d}}@media (max-width: 768px){.image-preview-container[data-v-fc970c70]{padding:6px 0;margin-bottom:6px}.image-preview-item[data-v-fc970c70]{width:50px;height:50px}.add-button[data-v-fc970c70]{width:32px;height:32px;border-radius:10px}.action-menu[data-v-fc970c70]{min-width:100px}.action-menu-item[data-v-fc970c70]{padding:10px 12px;font-size:13px}.remove-image-btn[data-v-fc970c70]{width:18px;height:18px;top:-5px;right:-5px}}.layout-iframe{width:100%;height:100%;border:none}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Context } from 'koishi';
|
|
2
|
+
import { Config } from './config';
|
|
3
|
+
import { FileManager } from './file-manager';
|
|
4
|
+
export declare class ApiHandlers {
|
|
5
|
+
private ctx;
|
|
6
|
+
private config;
|
|
7
|
+
private fileManager;
|
|
8
|
+
private logger;
|
|
9
|
+
constructor(ctx: Context, config: Config, fileManager: FileManager);
|
|
10
|
+
registerApiHandlers(): void;
|
|
11
|
+
private isFileUrl;
|
|
12
|
+
private createFileUrl;
|
|
13
|
+
private handleLocalFileRequest;
|
|
14
|
+
private setupTempFileCleanup;
|
|
15
|
+
private cleanupTempImagesByCount;
|
|
16
|
+
private logInfo;
|
|
17
|
+
}
|
package/lib/config.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Schema } from 'koishi';
|
|
2
|
+
export interface Config {
|
|
3
|
+
loggerinfo: boolean;
|
|
4
|
+
maxMessagesPerChannel: number;
|
|
5
|
+
keepMessagesOnClear: number;
|
|
6
|
+
keepTempImages: number;
|
|
7
|
+
blockedPlatforms: Array<{
|
|
8
|
+
platformName: string;
|
|
9
|
+
exactMatch: boolean;
|
|
10
|
+
}>;
|
|
11
|
+
chatContainerHeight: number;
|
|
12
|
+
}
|
|
13
|
+
export declare const Config: Schema<Config>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Context } from 'koishi';
|
|
2
|
+
import { ChatData, MessageInfo } from './types';
|
|
3
|
+
import { Config } from './config';
|
|
4
|
+
export declare class FileManager {
|
|
5
|
+
private ctx;
|
|
6
|
+
private config;
|
|
7
|
+
private dataFilePath;
|
|
8
|
+
private fileOperationLock;
|
|
9
|
+
private logger;
|
|
10
|
+
constructor(ctx: Context, config: Config);
|
|
11
|
+
private ensureDataDir;
|
|
12
|
+
readChatDataFromFile(): ChatData;
|
|
13
|
+
writeChatDataToFile(data: ChatData): void;
|
|
14
|
+
cleanExcessMessages(data: ChatData): ChatData;
|
|
15
|
+
addMessageToFile(messageInfo: MessageInfo): Promise<void>;
|
|
16
|
+
private logInfo;
|
|
17
|
+
}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,20 +1,11 @@
|
|
|
1
|
-
import { Context
|
|
1
|
+
import { Context } from 'koishi';
|
|
2
|
+
import { Config } from './config';
|
|
2
3
|
export declare const name = "chat-patch";
|
|
3
4
|
export declare const reusable = false;
|
|
4
5
|
export declare const filter = false;
|
|
5
6
|
export declare const inject: {
|
|
6
7
|
required: string[];
|
|
7
8
|
};
|
|
8
|
-
export declare const usage = "\n---\n\n\u5F00\u542F\u540E\uFF0C\u5373\u53EF\u5728koishi\u63A7\u5236\u53F0\u64CD\u4F5C\u673A\u5668\u4EBA\u6536\u53D1\u6D88\u606F\u5566\n\n\u6682\u65F6\u53EA\u652F\u6301\u63A5\u53D7\u56FE\u6587\u6D88\u606F / \u53D1\u9001\u6587\u5B57\u6D88\u606F\n\n---\n";
|
|
9
|
-
export
|
|
10
|
-
loggerinfo: boolean;
|
|
11
|
-
maxMessagesPerChannel: number;
|
|
12
|
-
keepMessagesOnClear: number;
|
|
13
|
-
blockedPlatforms: Array<{
|
|
14
|
-
platformName: string;
|
|
15
|
-
exactMatch: boolean;
|
|
16
|
-
}>;
|
|
17
|
-
chatContainerHeight: number;
|
|
18
|
-
}
|
|
19
|
-
export declare const Config: Schema<Config>;
|
|
9
|
+
export declare const usage = "\n\n---\n\n\u5F00\u542F\u540E\uFF0C\u5373\u53EF\u5728koishi\u63A7\u5236\u53F0\u64CD\u4F5C\u673A\u5668\u4EBA\u6536\u53D1\u6D88\u606F\u5566\n\n\u6682\u65F6\u53EA\u652F\u6301\u63A5\u53D7\u56FE\u6587\u6D88\u606F / \u53D1\u9001\u6587\u5B57\u6D88\u606F\n\n---\n";
|
|
10
|
+
export { Config } from './config';
|
|
20
11
|
export declare function apply(ctx: Context, config: Config): Promise<void>;
|