Skip to content

Commit 2f1f184

Browse files
authored
feat: 补齐INTERACTION事件,增加异步更新交互数据接口 (#59)
* feat: 补齐INTERACTION事件,增加异步更新交互数据接口 * feat: 补齐INTERACTION事件,增加异步更新交互数据接口 * feat: 补齐INTERACTION事件,增加异步更新交互数据接口 * feat: 补齐INTERACTION事件,增加异步更新交互数据接口 * feat: 补齐INTERACTION事件,增加异步更新交互数据接口
1 parent f9f6947 commit 2f1f184

File tree

6 files changed

+56
-3
lines changed

6 files changed

+56
-3
lines changed

src/openapi/v1/interaction.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { Config, OpenAPIRequest, InteractionAPI, InteractionData } from '@src/types';
2+
import { RestyResponse } from 'resty-client';
3+
import { getURL } from './resource';
4+
5+
export default class Interaction implements InteractionAPI {
6+
public request: OpenAPIRequest;
7+
public config: Config;
8+
constructor(request: OpenAPIRequest, config: Config) {
9+
this.request = request;
10+
this.config = config;
11+
}
12+
13+
// 异步更新交互数据
14+
public putInteraction(interactionID: string, interactionData: InteractionData): Promise<RestyResponse<any>> {
15+
const options = {
16+
method: 'PUT' as const,
17+
url: getURL('interactionURI'),
18+
headers: {
19+
'Content-Type': 'none',
20+
},
21+
rest: {
22+
interactionID,
23+
},
24+
data: interactionData,
25+
};
26+
return this.request(options);
27+
}
28+
}

src/openapi/v1/openapi.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import Mute from './mute';
1616
import Announce from './announce';
1717
import Schedule from './schedule';
1818
import GuildPermissions from './guild-permissions';
19+
import Interaction from './interaction';
1920
import { addUserAgent, addAuthorization, buildUrl } from '@src/utils/utils';
2021
import {
2122
GuildAPI,
@@ -35,6 +36,7 @@ import {
3536
GuildPermissionsAPI,
3637
ReactionAPI,
3738
PinsMessageAPI,
39+
InteractionAPI,
3840
} from '@src/types';
3941
export const apiVersion = 'v1';
4042
export class OpenAPI implements IOpenAPI {
@@ -59,6 +61,7 @@ export class OpenAPI implements IOpenAPI {
5961
public channelPermissionsApi!: ChannelPermissionsAPI;
6062
public audioApi!: AudioAPI;
6163
public reactionApi!: ReactionAPI;
64+
public interactionApi!: InteractionAPI;
6265
public pinsMessageApi!: PinsMessageAPI;
6366
public guildPermissionsApi!: GuildPermissionsAPI;
6467

@@ -83,6 +86,7 @@ export class OpenAPI implements IOpenAPI {
8386
client.audioApi = new Audio(this.request, this.config);
8487
client.guildPermissionsApi = new GuildPermissions(this.request, this.config);
8588
client.reactionApi = new Reaction(this.request, this.config);
89+
client.interactionApi = new Interaction(this.request, this.config);
8690
client.pinsMessageApi = new PinsMessage(this.request, this.config);
8791
}
8892
// 基础rest请求

src/openapi/v1/resource.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,6 @@ const apiMap = {
3232
reactionURI: '/channels/:channelID/messages/:messageID/reactions/:emojiType/:emojiID',
3333
pinsMessageIdURI: '/channels/:channelID/pins/:messageID',
3434
pinsMessageURI: '/channels/:channelID/pins',
35+
interactionURI: '/interactions/:interactionID',
3536
};
3637
export const getURL = (endpoint: keyof typeof apiMap) => apiMap[endpoint];

src/types/openapi/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { MuteAPI } from './v1/mute';
1212
import { AnnounceAPI } from './v1/announce';
1313
import { ScheduleAPI } from './v1/schedule';
1414
import { ReactionAPI } from './v1/reaction';
15+
import { InteractionAPI } from './v1/interaction';
1516
import { PinsMessageAPI } from './v1/pins-message';
1617
import { GuildPermissionsAPI } from './v1/guild-permission';
1718

@@ -40,6 +41,7 @@ export interface IOpenAPI {
4041
audioApi: AudioAPI;
4142
guildPermissionsApi: GuildPermissionsAPI;
4243
reactionApi: ReactionAPI;
44+
interactionApi: InteractionAPI;
4345
pinsMessageApi: PinsMessageAPI;
4446
}
4547

@@ -69,5 +71,6 @@ export * from './v1/mute';
6971
export * from './v1/announce';
7072
export * from './v1/schedule';
7173
export * from './v1/reaction';
74+
export * from './v1/interaction';
7275
export * from './v1/pins-message';
7376
export * from './v1/guild-permission';
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { RestyResponse } from 'resty-client';
2+
3+
/**
4+
* ============= Interaction 接口 =============
5+
*/
6+
export interface InteractionAPI {
7+
putInteraction: (interactionID: string, interactionData: InteractionData) => Promise<RestyResponse<any>>;
8+
}
9+
10+
export interface InteractionData {
11+
code: number; // 0成功,1操作失败,2操作频繁,3重复操作,4没有权限,5仅管理员操作
12+
}

src/types/websocket-types.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ export enum AvailableIntentsEventsEnum {
8181
AUDIO_ACTION = 'AUDIO_ACTION',
8282
AT_MESSAGES = 'AT_MESSAGES',
8383
MESSAGE_AUDIT = 'MESSAGE_AUDIT',
84+
INTERACTION = 'INTERACTION',
8485
}
8586

8687
// OpenAPI传过来的事件类型
@@ -108,12 +109,15 @@ export const WsEventType: { [key: string]: AvailableIntentsEventsEnum } = {
108109
MESSAGE_REACTION_ADD: AvailableIntentsEventsEnum.GUILD_MESSAGE_REACTIONS, // 为消息添加表情表态
109110
MESSAGE_REACTION_REMOVE: AvailableIntentsEventsEnum.GUILD_MESSAGE_REACTIONS, // 为消息删除表情表态
110111

112+
// ======= INTERACTION ======
113+
INTERACTION_CREATE: AvailableIntentsEventsEnum.INTERACTION, // 互动事件创建时
114+
111115
// ======= MESSAGE_AUDIT ======
112-
MESSAGE_AUDIT_PASS: AvailableIntentsEventsEnum.MESSAGE_AUDIT, // / 消息审核通过
113-
MESSAGE_AUDIT_REJECT: AvailableIntentsEventsEnum.MESSAGE_AUDIT, // / 消息审核不通过
116+
MESSAGE_AUDIT_PASS: AvailableIntentsEventsEnum.MESSAGE_AUDIT, // 消息审核通过
117+
MESSAGE_AUDIT_REJECT: AvailableIntentsEventsEnum.MESSAGE_AUDIT, // 消息审核不通过
114118

115119
// ======= FORUM_EVENT ======
116-
THREAD_CREATE: AvailableIntentsEventsEnum.FORUM_EVENT, // / 当用户创建主题时
120+
THREAD_CREATE: AvailableIntentsEventsEnum.FORUM_EVENT, // 当用户创建主题时
117121
THREAD_UPDATE: AvailableIntentsEventsEnum.FORUM_EVENT, // 当用户删除主题时
118122
POST_CREATE: AvailableIntentsEventsEnum.FORUM_EVENT, // 当用户创建帖子时
119123
POST_DELETE: AvailableIntentsEventsEnum.FORUM_EVENT, // 当用户删除帖子时
@@ -223,6 +227,7 @@ export const IntentEvents: IntentEventsMapType = {
223227
GUILD_MESSAGES: 1 << 9,
224228
GUILD_MESSAGE_REACTIONS: 1 << 10,
225229
DIRECT_MESSAGE: 1 << 12,
230+
INTERACTION: 1 << 26,
226231
MESSAGE_AUDIT: 1 << 27,
227232
FORUM_EVENT: 1 << 28,
228233
AUDIO_ACTION: 1 << 29,

0 commit comments

Comments
 (0)