Skip to content

Commit f30a5dd

Browse files
author
linyuan.yang
committed
scheduler 支持手动触发
1 parent 8068a59 commit f30a5dd

5 files changed

Lines changed: 28 additions & 0 deletions

File tree

packages/admin/src/i18n/en.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,8 @@ export default {
533533
edit_title: 'Edit Timer',
534534
message_required: 'Message is required',
535535
target_required: 'Please select a target session',
536+
trigger: 'Trigger',
537+
triggered: 'Triggered',
536538
},
537539
todo: {
538540
title: 'Todos',

packages/admin/src/i18n/zh.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,8 @@ export default {
533533
edit_title: '编辑计时器',
534534
message_required: '请填写目标消息',
535535
target_required: '请选择目标会话',
536+
trigger: '手动触发',
537+
triggered: '已触发',
536538
},
537539
todo: {
538540
title: '待办事项',

packages/admin/src/views/admin/SchedulerView.vue

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,16 @@ async function remove(row: SchedulerRow) {
165165
}
166166
}
167167
168+
async function trigger(row: SchedulerRow) {
169+
try {
170+
await apiFetch(`/api/schedulers/${row.id}/trigger`, 'POST')
171+
show(t('scheduler.triggered'))
172+
await load()
173+
} catch (e: any) {
174+
show(e.message, 'error')
175+
}
176+
}
177+
168178
onMounted(() => {
169179
load()
170180
tickHandle = setInterval(() => { now.value = Date.now() }, 30_000)
@@ -250,6 +260,7 @@ onUnmounted(() => {
250260
</template>
251261

252262
<template #ops="{ row }">
263+
<SButton type="outline" size="sm" @click="trigger(row)">{{ t('scheduler.trigger') }}</SButton>
253264
<SButton type="outline" size="sm" @click="openEdit(row)">{{ t('common.edit') }}</SButton>
254265
<SButton type="danger" size="sm" @click="remove(row)">{{ t('common.delete') }}</SButton>
255266
</template>

packages/sbot/src/Scheduler/SchedulerService.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,10 @@ class SchedulerService {
217217
if (scheduler) await this.schedule(scheduler);
218218
else this.executor.cancel(schedulerId);
219219
}
220+
221+
async triggerOnce(schedulerId: number): Promise<void> {
222+
await executeScheduler(schedulerId);
223+
}
220224
}
221225

222226
export const schedulerService = new SchedulerService();

packages/sbot/src/Server/routes/schedulers.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,15 @@ export class SchedulerRoutes {
3737
if (isNaN(id)) throwBad('Invalid id');
3838
await schedulerService.delete(id);
3939
}));
40+
41+
app.post('/api/schedulers/:id/trigger', api(async req => {
42+
const id = parseInt(req.params.id as string, 10);
43+
if (isNaN(id)) throwBad('Invalid id');
44+
const row = await schedulerService.findByPk(id);
45+
if (!row) throwBad('Scheduler not found');
46+
await schedulerService.triggerOnce(id);
47+
return { triggered: true };
48+
}));
4049
}
4150
}
4251

0 commit comments

Comments
 (0)