@seayoo-web/gamer-api 2.5.0 → 2.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@seayoo-web/gamer-api",
3
3
  "description": "agent for gamer api",
4
- "version": "2.5.0",
4
+ "version": "2.5.2",
5
5
  "type": "module",
6
6
  "source": "index.ts",
7
7
  "main": "./dist/index.js",
@@ -31,14 +31,14 @@
31
31
  "devDependencies": {
32
32
  "@types/node": "^22.13.1",
33
33
  "@seayoo-web/combo-webview": "^2.5.4",
34
- "@seayoo-web/scripts": "^2.6.0",
35
- "@seayoo-web/request": "^3.2.0",
34
+ "@seayoo-web/utils": "^3.6.1",
36
35
  "@seayoo-web/tsconfig": "^1.0.4",
37
- "@seayoo-web/utils": "^3.6.0"
36
+ "@seayoo-web/request": "^3.2.0",
37
+ "@seayoo-web/scripts": "^2.6.0"
38
38
  },
39
39
  "peerDependencies": {
40
40
  "@seayoo-web/combo-webview": "^2.5.4",
41
- "@seayoo-web/utils": "^3.6.0"
41
+ "@seayoo-web/utils": "^3.6.1"
42
42
  },
43
43
  "scripts": {
44
44
  "prebuild": "pnpm -F request build && pnpm -F combo-webview build",
@@ -0,0 +1,228 @@
1
+ import { type GamerItemType, EngageAccountType, EventPeriodType, FeatureType, QuestObjective, VoteOptionSource } from "./event.enums";
2
+ export interface EventConfig {
3
+ /** 活动名称 */
4
+ event_name: string;
5
+ /** 面向玩家的富文本活动规则 */
6
+ rules: string;
7
+ /** 活动开始时间 */
8
+ since: number;
9
+ /** 活动结束时间 */
10
+ until: number;
11
+ /** 活动访问人数 */
12
+ visit_count?: number;
13
+ /** 活动下玩法列表 */
14
+ features: EventFeatureConfig[];
15
+ }
16
+ export declare function isEventConfig(data: unknown): data is EventConfig;
17
+ export type EventFeatureConfig = EventFeatureBaseConfig<FeatureType.Preregister, NoopFeatureConfig> | EventFeatureBaseConfig<FeatureType.Lottery, FeatureLotteryConfig> | EventFeatureBaseConfig<FeatureType.Survey, FeatureSurveyConfig> | EventFeatureBaseConfig<FeatureType.Invite, FeatureInviteConfig> | EventFeatureBaseConfig<FeatureType.Share, FeatureShareConfig> | EventFeatureBaseConfig<FeatureType.Follow, FeatureFollowConfig> | EventFeatureBaseConfig<FeatureType.Subscribe, FeatureSubscribeConfig> | EventFeatureBaseConfig<FeatureType.Comment, FeatureCommentConfig> | EventFeatureBaseConfig<FeatureType.Vote, FeatureVoteConfig> | EventFeatureBaseConfig<FeatureType.Cashback, FeatureCashbackConfig> | EventFeatureBaseConfig<FeatureType.GiftCode, FeatureGiftCodeConfig> | EventFeatureBaseConfig<FeatureType.Register, NoopFeatureConfig> | EventFeatureBaseConfig<FeatureType.InvitedRegister, NoopFeatureConfig> | EventFeatureBaseConfig<FeatureType.ClaimRewards, NoopFeatureConfig> | EventFeatureBaseConfig<FeatureType.Quest, FeatureQuestConfig> | EventFeatureBaseConfig<FeatureType.Team, FeatureTeamConfig> | EventFeatureBaseConfig<FeatureType.LotteryDraw, FeatureLotteryDrawConfig> | EventFeatureBaseConfig<FeatureType.CheckIn, NoopFeatureConfig>;
18
+ export interface EventRewardItemConfig {
19
+ /** 玩法奖励道具 id */
20
+ reward_item_id: number;
21
+ /** 玩法奖励道具数量 */
22
+ reward_amount: number;
23
+ /** 玩法奖励道具名称 */
24
+ reward_item_name: string;
25
+ /** 玩法奖励道具图片地址 */
26
+ reward_item_icon_url: string;
27
+ /** 玩法奖励道具描述 */
28
+ reward_item_desc?: string;
29
+ /** 玩法奖励道具类型 */
30
+ reward_item_type: Exclude<GamerItemType, GamerItemType.GiftCode | GamerItemType.LotteryTicket>;
31
+ /** 奖励道具评级,用于前端展示 */
32
+ reward_item_rating: number;
33
+ }
34
+ export interface RegularReward {
35
+ engage_count: number;
36
+ rewards: EventRewardItemConfig[];
37
+ }
38
+ export type FeatureReward = {
39
+ feature_reward_type: "every";
40
+ reward_details: EventRewardItemConfig[];
41
+ } | {
42
+ feature_reward_type: "regular";
43
+ reward_details: RegularReward[];
44
+ };
45
+ export type NoopFeatureConfig = {} | null;
46
+ export interface EventFeatureBaseConfig<T extends FeatureType = FeatureType, C extends object | null = object> {
47
+ /** 玩法名称 */
48
+ feature_name: string;
49
+ /** 玩法 Id */
50
+ feature_id: number;
51
+ /** 玩法描述 */
52
+ description: string;
53
+ /** 玩法类型 */
54
+ feature_type: T;
55
+ /** 玩法配置 */
56
+ config?: C;
57
+ /** 玩法周期,即每多长时间可参与一次 */
58
+ cycle: EventPeriodType;
59
+ /** 允许的最大参与次数 */
60
+ limit: number;
61
+ /** 玩法开始时间 */
62
+ since: number;
63
+ /** 玩法结束时间 */
64
+ until: number;
65
+ /** 参与玩法维度账号类型 */
66
+ engage_account: EngageAccountType;
67
+ /** 玩法参与奖励 */
68
+ feature_rewards?: FeatureReward;
69
+ }
70
+ export interface FeatureLotteryItemConfig {
71
+ /** 抽奖奖励道具 id */
72
+ reward_item_id: number;
73
+ /** 抽奖奖励道具名称 */
74
+ reward_item_name: string;
75
+ /** 抽奖奖励道具类型 */
76
+ reward_item_type: Exclude<GamerItemType, GamerItemType.GiftCode | GamerItemType.LotteryTicket>;
77
+ /** 抽奖奖励道具图片地址 */
78
+ reward_item_icon_url: string;
79
+ /** 抽奖奖励道具描述 */
80
+ reward_item_desc?: string;
81
+ /** 抽奖奖励道具数量 */
82
+ reward_amount: number;
83
+ /** 抽奖奖励道具库存 */
84
+ reward_remaining_stock: number;
85
+ }
86
+ export interface FeatureLotteryConfig {
87
+ /** 抽奖消耗道具 id */
88
+ consume_item_id: number;
89
+ /** 抽奖消耗道具名称 */
90
+ consume_item_name: number;
91
+ /** 抽奖消耗道具图片地址 */
92
+ consume_item_icon_url: string;
93
+ /** 抽奖消耗道具数量配置 */
94
+ consume_item_count: number;
95
+ /** 抽奖消耗道具描述 */
96
+ consume_item_desc?: string;
97
+ /** 抽奖配置奖励列表 */
98
+ rewards: FeatureLotteryItemConfig[];
99
+ }
100
+ export interface FeatureSurveyConfig {
101
+ /** 问卷 ID */
102
+ survey_id: string;
103
+ /** 问卷 url 地址 */
104
+ survey_url: string;
105
+ }
106
+ export interface FeatureInviteConfig {
107
+ /** 邀请玩法配置分享链接 */
108
+ share_url: string;
109
+ }
110
+ export interface FeatureShareConfig {
111
+ /** 分享玩法配置分享平台 */
112
+ share_platform: string;
113
+ /** 分享玩法配置跳转地址 */
114
+ jump_url?: string;
115
+ /** 分享玩法分享平台图标 */
116
+ icon_url?: string;
117
+ }
118
+ export interface FeatureFollowConfig {
119
+ /**
120
+ * 社交媒体平台的标识
121
+ *
122
+ * 比如 "bilibili", "douyin", "xiaohongshu", "weibo", "weixin_official_account", "qq"
123
+ */
124
+ platform: string;
125
+ /** 社交媒体平台 icon */
126
+ platform_icon?: string;
127
+ /** 跳转链接 */
128
+ link?: string;
129
+ /** 二维码链接地址 */
130
+ qr_code_url?: string;
131
+ /** 社交媒体平台描述 */
132
+ platform_desc?: string;
133
+ }
134
+ export interface FeatureSubscribeConfig {
135
+ /** 一组微信订阅消息模版 ID */
136
+ weixin_template_ids: string[];
137
+ }
138
+ export interface FeatureCommentConfig {
139
+ /** 活动配置的弹幕信息,用于快捷选择 */
140
+ comments: string[];
141
+ /** 发送频率限制,单位:秒 */
142
+ send_rate: number;
143
+ }
144
+ export interface FeatureVoteConfig {
145
+ /** 关联一个或多个投票玩法 ID */
146
+ vote_feature_ids: number[];
147
+ /** 关联一个或多个投稿玩法 ID */
148
+ submission_feature_ids: number[];
149
+ /** 入围数量 */
150
+ finalists_amount: number;
151
+ /** 选项来源 */
152
+ source: VoteOptionSource;
153
+ /** 投票选项配置 */
154
+ options: FeatureVoteOption[];
155
+ /** 投票入围后用户可获得的奖励 */
156
+ rewards: EventRewardItemConfig[];
157
+ }
158
+ export interface FeatureVoteOption {
159
+ /** 选项标识 */
160
+ sn: string;
161
+ /** 选项名称 */
162
+ name: string;
163
+ /** 选项图片地址 */
164
+ img_urls?: string[];
165
+ /** 选项视频地址 */
166
+ video_urls?: string[];
167
+ /** 选项描述文本 */
168
+ descriptions?: string[];
169
+ /** 跳转地址 */
170
+ jump_url: string;
171
+ /** 选项投票数量 */
172
+ amount: number;
173
+ /** 选项是否入围 */
174
+ finalists: boolean;
175
+ /** 最后投票时间秒级时间戳 */
176
+ last_vote_time: number;
177
+ }
178
+ export interface FeatureCashbackConfig {
179
+ /** 计算充值总额的开始时间 */
180
+ order_start_time: number;
181
+ /** 计算充值总额的结束时间 */
182
+ order_end_time: number;
183
+ /** 可领取充值返还奖励的开始时间 */
184
+ claim_rewards_start_time: number;
185
+ /** 可领取充值返还奖励的结束时间 */
186
+ claim_rewards_end_time: number;
187
+ }
188
+ export interface FeatureGiftCodeConfig {
189
+ /** 用于前端显示礼包码兑换后会获得的奖励内容 */
190
+ gift_items: EventGiftItemConfig[];
191
+ /** 社媒平台链接 */
192
+ mp_url?: string;
193
+ /** 社媒平台二维码 */
194
+ mp_qrcode_url?: string;
195
+ }
196
+ export interface EventGiftItemConfig {
197
+ /** 用于前端展示的游戏道具名称 */
198
+ name: string;
199
+ /** 用于前端展示的游戏道具图片地址 */
200
+ icon_url: string;
201
+ /** 用于前端展示的游戏道具数量 */
202
+ count: number;
203
+ }
204
+ export interface FeatureQuestConfig {
205
+ /** 任务目标 */
206
+ objective: QuestObjective;
207
+ /** 目标值 */
208
+ completion_value: number;
209
+ /** 团队任务配置 */
210
+ team?: {
211
+ /** 组队任务 ID */
212
+ feature_id?: number;
213
+ /** 目标值 */
214
+ completion_value: number;
215
+ };
216
+ }
217
+ export interface FeatureTeamConfig {
218
+ /** 队伍最大成员数 */
219
+ max_members: number;
220
+ /** 队伍最小成员数 */
221
+ min_members: number;
222
+ }
223
+ export interface FeatureLotteryDrawConfig {
224
+ /** 可开奖起始时间 */
225
+ draw_not_before: number;
226
+ /** 可开奖结束时间 */
227
+ draw_not_after: number;
228
+ }
@@ -73,6 +73,15 @@ export declare class EventApi {
73
73
  server_id: string;
74
74
  role_id: string;
75
75
  }, requestOptions?: IRequestOptions): Promise<import("./event.define").UserFeatureStatus[]>;
76
+ /**
77
+ * 获取用户在目标活动下的某个玩法的参与次数
78
+ *
79
+ * https://kdocs.cn/l/ckWFDcOsYEUA?linkname=uYCsjWyL36
80
+ */
81
+ getUserEngagementCount(featureId: number, option?: {
82
+ server_id: string;
83
+ role_id: string;
84
+ }): Promise<Record<string, number>>;
76
85
  /**
77
86
  * 获取当前登录用户参与某个玩法的记录
78
87
  *
@@ -122,7 +131,7 @@ export declare class EventApi {
122
131
  role_name?: string;
123
132
  }, requestOptions?: IRequestOptions): Promise<import("./event.define").EngageResponse | {
124
133
  message: string;
125
- error: RequestInternalError | "event_not_found" | "feature_not_found" | "invalid_weixin_appid" | "invalid_weixin_openid" | "event_not_started" | "event_already_ended" | "engage_feature_reached_limit" | "comment_too_frequently" | "lottery_reward_is_empty" | "invalid_merchant_parameter" | "budget_not_enough" | "combo_id_not_found" | "query_user_order_total_amount_err" | "unique_gift_code_is_empty" | "player_created_at_out_of_range" | "user_had_joined_a_team" | "team_is_full" | "disband_team_not_allowed" | "change_team_visibility_not_allowed" | "team_not_found" | "join_team_conflict" | "team_has_been_disbanded" | "exceeded_assembled_team_limit" | "invalid_engage_lottery_draw_ticket" | "lottery_ticket_not_found" | "draw_lottery_ticket_not_start" | "draw_lottery_ticket_is_ended" | "activation_group_not_found" | "activation_group_expired" | "no_claim_activation_key_eligibility" | "no_activation_key_available";
134
+ error: RequestInternalError | "event_not_found" | "feature_not_found" | "invalid_weixin_appid" | "invalid_weixin_openid" | "event_not_started" | "event_already_ended" | "engage_feature_reached_limit" | "comment_too_frequently" | "lottery_reward_is_empty" | "invalid_merchant_parameter" | "budget_not_enough" | "combo_id_not_found" | "query_user_order_total_amount_err" | "unique_gift_code_is_empty" | "player_created_at_out_of_range" | "user_had_joined_a_team" | "team_is_full" | "disband_team_not_allowed" | "change_team_visibility_not_allowed" | "team_not_found" | "join_team_conflict" | "team_has_been_disbanded" | "exceeded_assembled_team_limit" | "invalid_engage_lottery_draw_ticket" | "lottery_ticket_not_found" | "draw_lottery_ticket_not_start" | "draw_lottery_ticket_is_ended" | "activation_group_not_found" | "activation_group_expired" | "no_claim_activation_key_eligibility" | "no_activation_key_available" | "activation_key_all_claimed";
126
135
  }>;
127
136
  /**
128
137
  * 用户领取除红包和实物奖励以外的所有奖励
@@ -11,6 +11,7 @@ import { type WeixinSubscribeEngagementData } from "./engage.subscribe";
11
11
  import { type SurveyEngagementData } from "./engage.survey";
12
12
  import { type TeamEngagementData } from "./engage.team";
13
13
  import { type VoteEngagementData } from "./engage.vote";
14
+ import { type ZeroChatGPTData } from "./engage.zeroChatGPT";
14
15
  export * from "./engage.cashback";
15
16
  export * from "./engage.comment";
16
17
  export * from "./engage.giftcode";
@@ -26,7 +27,7 @@ export * from "./engage.team";
26
27
  export * from "./engage.vote";
27
28
  export * from "./engage.claimActivationKey";
28
29
  export type EmptyObject = Record<string | number | symbol, never>;
29
- export type UserEngagementData = PreregisterEngagementData | LotteryEngagementData | SurveyEngagementData | InviteEngagementData | ShareEngagementData | VoteEngagementData | WeixinSubscribeEngagementData | CashbackEngagementData | GiftCodeEngagementData | TeamEngagementData | QuestEngagementData | LotteryDrawEngagementData | ClaimActivationKeyEngagementData | EmptyObject;
30
+ export type UserEngagementData = PreregisterEngagementData | LotteryEngagementData | SurveyEngagementData | InviteEngagementData | ShareEngagementData | VoteEngagementData | WeixinSubscribeEngagementData | CashbackEngagementData | GiftCodeEngagementData | TeamEngagementData | QuestEngagementData | LotteryDrawEngagementData | ClaimActivationKeyEngagementData | ZeroChatGPTData | EmptyObject;
30
31
  export declare const UserEngagementDataValidator: import("@seayoo-web/utils").UnionValidator<[import("@seayoo-web/utils").ObjectValidator<{
31
32
  platforms: string[];
32
33
  }, false, false>, import("@seayoo-web/utils").ObjectValidator<LotteryEngagementData, false, false>, import("@seayoo-web/utils").ObjectValidator<{
@@ -40,7 +41,12 @@ export declare const UserEngagementDataValidator: import("@seayoo-web/utils").Un
40
41
  status: /*elided*/ any;
41
42
  reward: /*elided*/ any;
42
43
  })[];
43
- }, false, false>, import("@seayoo-web/utils").ObjectValidator<ClaimActivationKeyEngagementData, false, false>, import("@seayoo-web/utils").CustomValidator<EmptyObject, false, false>], false, false> & {
44
+ }, false, false>, import("@seayoo-web/utils").ObjectValidator<ClaimActivationKeyEngagementData, false, false>, import("@seayoo-web/utils").ObjectValidator<{
45
+ conversations: {
46
+ role: /*elided*/ any;
47
+ content: /*elided*/ any;
48
+ }[];
49
+ }, false, false>, import("@seayoo-web/utils").CustomValidator<EmptyObject, false, false>], false, false> & {
44
50
  optional: never;
45
51
  maybeNull: never;
46
52
  key: never;
@@ -32,7 +32,11 @@ export interface UserReward {
32
32
  feature_type: FeatureType;
33
33
  /** 领奖时间 */
34
34
  receive_time: number;
35
- /** 提供额外扩展信息,比如收获地址等 */
35
+ /**
36
+ * 提供额外扩展信息,比如收获地址等,由 reward_item_type 值决定
37
+ *
38
+ * https://kdocs.cn/l/ckWFDcOsYEUA?linkname=merUzJsVYH
39
+ */
36
40
  extra_data?: Record<string, unknown>;
37
41
  }
38
42
  export declare const UserRewardValidator: import("@seayoo-web/utils").ObjectValidator<UserReward, false, false>;
@@ -0,0 +1,21 @@
1
+ export type ZeroChatGPTEngagementParam = {
2
+ /** 聊天内容 */
3
+ content: string;
4
+ };
5
+ export type Conversation = {
6
+ role: string;
7
+ content: string;
8
+ };
9
+ export type ZeroChatGPTData = {
10
+ conversations: Conversation[];
11
+ };
12
+ export declare const ConversationValidator: import("@seayoo-web/utils").ObjectValidator<{
13
+ role: string;
14
+ content: string;
15
+ }, false, false>;
16
+ export declare const ZeroChatGPTDataValidator: import("@seayoo-web/utils").ObjectValidator<{
17
+ conversations: {
18
+ role: /*elided*/ any;
19
+ content: /*elided*/ any;
20
+ }[];
21
+ }, false, false>;
@@ -1,6 +1,7 @@
1
1
  import { type UserEngagementData, type CommentEngagementParam, type PreregisterEngagementParam, type LotteryEngagementParam, type LotteryDrawEngagementParam, type ShareEngagementParam, type SubscribeEngagementParam, type TeamEngagementParam, type VoteEngagementParam } from "./engage";
2
2
  import { type Reward } from "./reward";
3
3
  import type { FeatureType } from "../event.enums";
4
+ import type { ZeroChatGPTEngagementParam } from "./engage.zeroChatGPT";
4
5
  export * from "./engage";
5
6
  export * from "./reward";
6
7
  export type UserEngagement = {
@@ -31,9 +32,9 @@ export declare const UserEngagementValidator: import("@seayoo-web/utils").Object
31
32
  /**
32
33
  * 部分玩法参与时需要提供的参数
33
34
  */
34
- export type EngagementParam = PreregisterEngagementParam | LotteryEngagementParam | CommentEngagementParam | ShareEngagementParam | VoteEngagementParam | SubscribeEngagementParam | TeamEngagementParam | LotteryDrawEngagementParam;
35
+ export type EngagementParam = PreregisterEngagementParam | LotteryEngagementParam | CommentEngagementParam | ShareEngagementParam | VoteEngagementParam | SubscribeEngagementParam | TeamEngagementParam | LotteryDrawEngagementParam | ZeroChatGPTEngagementParam;
35
36
  export type EngagementFeatureType = FeatureType | unknown;
36
37
  /**
37
38
  * 根据玩法类型推导需要提交的参数数据类型
38
39
  */
39
- export type InferEngagementParam<T extends EngagementFeatureType> = [unknown] extends [T] ? EngagementParam : [T] extends ["preregister"] ? PreregisterEngagementParam : [T] extends ["lottery"] ? LotteryEngagementParam : [T] extends ["comment"] ? CommentEngagementParam : [T] extends ["share"] ? ShareEngagementParam : [T] extends ["vote"] ? VoteEngagementParam : [T] extends ["weixin_subscribe"] ? SubscribeEngagementParam : [T] extends ["team"] ? TeamEngagementParam : [T] extends ["lottery_draw"] ? LotteryDrawEngagementParam : null;
40
+ export type InferEngagementParam<T extends EngagementFeatureType> = [unknown] extends [T] ? EngagementParam : [T] extends ["preregister"] ? PreregisterEngagementParam : [T] extends ["lottery"] ? LotteryEngagementParam : [T] extends ["comment"] ? CommentEngagementParam : [T] extends ["share"] ? ShareEngagementParam : [T] extends ["vote"] ? VoteEngagementParam : [T] extends ["weixin_subscribe"] ? SubscribeEngagementParam : [T] extends ["team"] ? TeamEngagementParam : [T] extends ["lottery_draw"] ? LotteryDrawEngagementParam : [T] extends ["zero_chatgpt"] ? ZeroChatGPTEngagementParam : null;
@@ -142,6 +142,8 @@ export declare const FeatureType: {
142
142
  readonly CheckIn: "check_in";
143
143
  /** 领取激活码 */
144
144
  readonly ClaimActivationKey: "claim_activation_key";
145
+ /** 不朽箴言特有的 AI 聊天 */
146
+ readonly ZeroChatgpt: "zero_chatgpt";
145
147
  };
146
148
  export type FeatureType = ValueOf<typeof FeatureType>;
147
149
  export declare const FeatureTypeValidator: import("@seayoo-web/utils").StringValidator<FeatureType, false, false> & {
@@ -12,6 +12,9 @@ export declare const isEngagementsResponse: (data: unknown) => data is {
12
12
  export declare const isUserFeatureStatusResponse: (data: unknown) => data is {
13
13
  status: import("./event.define").UserFeatureStatus[];
14
14
  };
15
+ export declare const isEngagementCountResponse: (data: unknown) => data is {
16
+ engagements_counts: Record<string, number>;
17
+ };
15
18
  export declare const isUserEngagementsResponse: (data: unknown) => data is {
16
19
  engagements: import("./event.engage").UserEngagement[];
17
20
  next_token: string | undefined;