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) { const { task } = data let cfg = this.params.activity.tasks.find(t => t.id === task.id) 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 = {} try { await this.params.user.save() } catch(err) { throw new ZError(100, 'save failed') } if (cfg.autoclaim) { try { await this.claimReward(task); } catch(err) { console.log(err) } } return true } }