38 lines
1.0 KiB
TypeScript
38 lines
1.0 KiB
TypeScript
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
|
|
}
|
|
}
|