增加tweet和like任务

This commit is contained in:
CounterFire2023 2024-04-16 19:50:57 +08:00
parent 039d2773e5
commit fbb9aba160
5 changed files with 117 additions and 4 deletions

View File

@ -66,14 +66,29 @@
}, {
"id": "e2fuah0j30vwcpe0my7",
"task": "TwitterRetweet",
"title": "Repost and like on X",
"title": "Repost on X",
"type": 1,
"desc": "Show your friends Counter Fire.",
"category": "Social Tasks",
"score": 150,
"score": 50,
"autoclaim": false,
"pretasks": [],
"cfg": {"icon": "twitter", "content": "Just joined Counter Fire! 🎮 Excited about the endless opportunities ahead. 🔥 Let's team up and conquer together! Come in with me #CounterFire #GamingAdventures"},
"cfg": {"icon": "twitter", "content": "1779507826714681538"},
"start": "2024-01-01 00:00",
"end": "2025-01-01 00:00",
"checkChain": true,
"params": {"time": 6, "failRate": 0}
}, {
"id": "e2fuah0j30vwcpe0my9",
"task": "TwitterLike",
"title": "Like on X",
"type": 1,
"desc": "Show your friends Counter Fire.",
"category": "Social Tasks",
"score": 50,
"autoclaim": false,
"pretasks": [],
"cfg": {"icon": "twitter", "content": "1779507826714681538"},
"start": "2024-01-01 00:00",
"end": "2025-01-01 00:00",
"checkChain": true,

View File

@ -116,7 +116,7 @@ export default class ActivityController extends BaseController {
@router('get /api/activity/score_list')
async scoreList(req) {
let user = req.user
const records = await ScoreRecord.find({ user: user.id, activity: user.activity })
const records = await ScoreRecord.find({ user: user.id, activity: user.activity, score: { $gt: 0 } })
return records.map(record => {
return {
score: formatNumShow(record.score),

View File

@ -0,0 +1,26 @@
import { isValidShareCode } from 'common/Utils'
import logger from 'logger/logger'
import { ChestStatusEnum } from 'models/ActivityChest'
import { NFTHolderRecord } from 'models/NFTHodlerRecord'
import { queryNftBalance } from 'services/chain.svr'
import { generateChestLevel, generateNewChest } from 'services/game.svr'
import { checkDiscordRole } from 'services/oauth.svr'
import { SyncLocker, BaseController, router, role, ROLE_ANON, ZError } from 'zutils'
/**
*
*/
class VoucherController extends BaseController {
@router('post /api/voucher/claim')
async claimVoucherReward(req) {
new SyncLocker().checkLock(req)
logger.db('claim_voucher', req)
const user = req.user
const { id } = req.params
if (!id || !isValidShareCode(id)) {
throw new ZError(10, 'invild voucher id')
}
return {}
}
}

36
src/tasks/TwitterLike.ts Normal file
View File

@ -0,0 +1,36 @@
import { ZError } from 'zutils'
import { ITask } from './base/ITask'
import { TaskStatusEnum } from 'models/ActivityUser'
export default class TwitterLike extends ITask {
static desc = 'twitter like'
static show: boolean = true
async execute(data: any) {
const { task } = data
let cfg = this.activity.tasks.find(t => t.id === task.id)
let time = cfg.params.time
if (Date.now() - task.timeStart < time * 1000) {
throw new ZError(11, 'like failed')
}
let num = Math.random() * 100
if (num < cfg.params.failRate) {
throw new ZError(12, 'like 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
}
}

36
src/tasks/TwitterTweet.ts Normal file
View File

@ -0,0 +1,36 @@
import { ZError } from 'zutils'
import { ITask } from './base/ITask'
import { TaskStatusEnum } from 'models/ActivityUser'
export default class TwitterTweet extends ITask {
static desc = 'twitter retweet'
static show: boolean = true
async execute(data: any) {
const { task } = data
let cfg = this.activity.tasks.find(t => t.id === task.id)
let time = cfg.params.time
if (Date.now() - task.timeStart < time * 1000) {
throw new ZError(11, 'tweet failed')
}
let num = Math.random() * 100
if (num < cfg.params.failRate) {
throw new ZError(12, 'tweet 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
}
}