task-svr/src/tasks/TwitterRetweet.ts
2023-12-20 19:32:35 +08:00

26 lines
858 B
TypeScript

import { ZError } from "common/ZError";
import { ITask } from "./base/ITask";
import { TaskStatusEnum } from "models/ActivityUser";
export default class TwitterRetweet extends ITask {
static desc = 'twitter retweet'
static show: boolean = true
async execute(data: any) {
let task = this.params.user.taskProgress.find(t => t.id === this.constructor.name)
let cfg = this.params.activity.tasks.find(t => t.task === this.constructor.name)
let time = cfg.params.time;
if (Date.now() - task.timeStart < time * 1000) {
throw new ZError(11, 'retweet failed')
}
let num = Math.random() * 100
if (num < cfg.params.failRate) {
throw new ZError(12, 'retweet failed')
}
task.status = TaskStatusEnum.SUCCESS
task.timeFinish = Date.now()
task.data = {}
await this.params.user.save()
return true
}
}