import { ITask } from './base/ITask' import { TaskStatusEnum } from 'models/ActivityUser' import { ZError } from 'common/ZError' import { TaskCfg } from 'models/ActivityInfo' export default class TwitterFollow extends ITask { static desc = 'twitter follow' static show: boolean = true async execute(data: any) { const { task } = data let cfg = this.activity.tasks.find((t: TaskCfg) => t.id === task.id) let time = cfg.params.time if (Date.now() - task.timeStart < time * 1000) { throw new ZError(11, 'follow failed') } let num = Math.random() * 100 if (num < cfg.params.failRate) { throw new ZError(12, 'follow failed') } task.status = TaskStatusEnum.SUCCESS task.timeFinish = Date.now() task.data = {} try { await this.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 } }