delay-parser.js 855 B

1234567891011121314151617181920
  1. /** 语句:delay 延迟(value 支持变量如 "{{stay-duration}}s";单位 ms/s/m/h/d/w/mon/月/y,可组合,纯数字按秒) */
  2. const types = ['delay']
  3. function parse(action, parseContext) {
  4. const parsed = { type: 'delay', value: action.value || action.delay || '0s' }
  5. return Object.assign({}, action, parsed)
  6. }
  7. async function execute(action, ctx) {
  8. const raw = action.value || action.delay || '0s'
  9. const resolved = ctx.replaceVariablesInString && ctx.variableContext
  10. ? ctx.replaceVariablesInString(String(raw), ctx.variableContext)
  11. : raw
  12. const delayMs = ctx.parseDelayString ? ctx.parseDelayString(resolved) : 0
  13. const waitMs = typeof delayMs === 'number' && delayMs > 0 ? delayMs : 0
  14. if (waitMs > 0) await new Promise(r => setTimeout(r, waitMs))
  15. return { success: true }
  16. }
  17. module.exports = { types, parse, execute }