dsh-sleep-send:给 DSH Web 输入框加上定时发送

前言

在 DSH Web 里写一条稍长、需要斟酌发送时机的消息时,直接发送或手动等待都不太顺手。DSH 插件生态的“一切皆插件”思路里,这种小需求可以做成独立客户端插件。下面介绍 dsh-sleep-send:它在输入框右侧增加定时发送按钮和配置面板,支持把消息排到智能时段或指定日期时间,并在到点时自动发送。

这是什么

dsh-sleep-send 是 DSH Web 的 Cordis 客户端插件,由 Awu12277 维护,许可证为 MIT。它解决的是“现在先写好,晚点再发”的问题:把已输入的消息加入定时任务队列,而不是立即发送。

运行环境是 DSH Web 浏览器界面。包为纯 ESM、零运行时依赖、无需构建;package.json 声明 Node 版本要求如下:

"node": ">=18"

调度定时器优先使用 cordis timer 服务,缺失时自动降级为浏览器定时器。

核心功能

输入框右侧按钮

插件在输入框右侧提供定时发送入口,槽位为:

conversation.input.right

空草稿时按钮禁用,输入内容后激活。

智能时段

默认智能时段覆盖两个范围:

12:00 – 14:00
18:00 – 次日 08:00

插件会在这些范围内自动选取最近的可发送时间。

自定义日期时间

支持自定义日期时间,包括时间选择器、今天 / 明天 / 后天快捷,以及原生日期选择器。

多任务排队

支持多个定时任务排队、查看和逐个删除。工具行芯片会显示任务数、下次发送时间和实时倒计时;点击工具行芯片上的取消操作可取消全部任务。

持久化与恢复

任务与偏好保存在当前浏览器的 localStorage 中,存储键为:

dsh.sched-send.v1

刷新页面后自动恢复。恢复规则如下:

  • 未到期任务保留;
  • 15 分钟内过期的任务补发;
  • 更早过期的任务丢弃。

防误覆盖

到点发送前,如果输入框内容已被修改,插件会自动取消本次发送,不覆盖新内容。

无障碍与性能

可交互元素带 focus-visible 焦点环;动画遵循 prefers-reduced-motion;脉冲动画仅使用 transform / opacity

安装与启用

先安装到 web profile:

dsh plugin --profile web add dsh-sleep-send

安装后需要重启 dsh web 生效。

典型用法

1、在输入框输入消息。

2、点击输入框右侧的定时或配置按钮,打开配置面板。

3、选择智能时段或自定义时间。

4、点击「加入 · HH:MM 发送」,任务加入列表并清空输入框;可继续输入下一条并排队。

5、工具行芯片显示最近任务时间与实时倒计时;如需取消全部任务,点击工具行芯片上的取消操作。

6、到点后消息自动发送;等待期间修改输入框内容会取消该任务。

适用场景与注意

适合在 DSH Web 中处理“稍后发送”的用户:例如整理一段说明、避免不合适的时间自动发送、把多条消息排到指定时间。

使用前需要注意:

  • 任务仅保存在当前浏览器的 localStorage 中,不上传任何服务器;
  • 更换浏览器、无痕窗口或清除站点数据会丢失任务;
  • 插件以当前 dsh 进程权限运行,会访问当前浏览器 localStorage;安装前建议先检查源码和 MIT 许可证;
  • 15 分钟内过期任务刷新后会补发,更早过期任务会丢弃。

链接

  • GitHub:https://github.com/Awu12277/dsh-sleep-send
  • 目录页:如所在 DSH 插件目录已收录,可搜索 dsh-sleep-send
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜