37 lines
996 B
TypeScript
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
|
|
}
|
|
|
|
} |