delay-parser.js 728 B

12345678910111213141516171819
  1. /** 语句:delay 延迟(value 支持变量,如 "{{stay-duration}}s";格式:数字+单位 s/m/h) */
  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(resolved)
  13. if (delayMs > 0) await new Promise(r => setTimeout(r, delayMs))
  14. return { success: true }
  15. }
  16. module.exports = { types, parse, execute }