task-svr/src/tasks/TwitterRetweet.ts
2024-01-04 19:08:33 +08:00

37 lines
996 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) {
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
}
}