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 } }