aboutsummaryrefslogtreecommitdiff
path: root/src/lib/extensions/discord.js/BushClientEvents.ts
blob: 02f001754a0b8a8c1ed3e14fd8cfa248fbab4042 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
import type {
	BushApplicationCommand,
	BushClient,
	BushDMChannel,
	BushGuild,
	BushGuildBan,
	BushGuildEmoji,
	BushGuildMember,
	BushGuildTextBasedChannel,
	BushMessage,
	BushMessageReaction,
	BushNewsChannel,
	BushNonThreadGuildBasedChannel,
	BushPresence,
	BushRole,
	BushStageInstance,
	BushTextBasedChannel,
	BushTextChannel,
	BushThreadChannel,
	BushThreadMember,
	BushUser,
	BushVoiceState,
	Guild,
	GuildSettings,
	PartialBushGuildMember,
	PartialBushMessage,
	PartialBushMessageReaction,
	PartialBushUser
} from '#lib';
import type { AkairoClientEvents } from 'discord-akairo';
import type {
	Collection,
	GuildScheduledEvent,
	Interaction,
	InvalidRequestWarningData,
	Invite,
	RateLimitData,
	Snowflake,
	Sticker,
	Typing
} from 'discord.js';

export interface BushClientEvents extends AkairoClientEvents {
	applicationCommandCreate: [command: BushApplicationCommand];
	applicationCommandDelete: [command: BushApplicationCommand];
	applicationCommandUpdate: [oldCommand: BushApplicationCommand | null, newCommand: BushApplicationCommand];
	channelCreate: [channel: BushNonThreadGuildBasedChannel];
	channelDelete: [channel: BushDMChannel | BushNonThreadGuildBasedChannel];
	channelPinsUpdate: [channel: BushTextBasedChannel, date: Date];
	channelUpdate: [
		oldChannel: BushDMChannel | BushNonThreadGuildBasedChannel,
		newChannel: BushDMChannel | BushNonThreadGuildBasedChannel
	];
	debug: [message: string];
	warn: [message: string];
	emojiCreate: [emoji: BushGuildEmoji];
	emojiDelete: [emoji: BushGuildEmoji];
	emojiUpdate: [oldEmoji: BushGuildEmoji, newEmoji: BushGuildEmoji];
	error: [error: Error];
	guildBanAdd: [ban: BushGuildBan];
	guildBanRemove: [ban: BushGuildBan];
	guildCreate: [guild: BushGuild];
	guildDelete: [guild: BushGuild];
	guildUnavailable: [guild: BushGuild];
	guildIntegrationsUpdate: [guild: BushGuild];
	guildMemberAdd: [member: BushGuildMember];
	guildMemberAvailable: [member: BushGuildMember | PartialBushGuildMember];
	guildMemberRemove: [member: BushGuildMember | PartialBushGuildMember];
	guildMembersChunk: [
		members: Collection<Snowflake, BushGuildMember>,
		guild: BushGuild,
		data: {
			count: number;
			index: number;
			nonce: string | undefined;
		}
	];
	guildMemberUpdate: [oldMember: BushGuildMember | PartialBushGuildMember, newMember: BushGuildMember];
	guildUpdate: [oldGuild: BushGuild, newGuild: BushGuild];
	inviteCreate: [invite: Invite];
	inviteDelete: [invite: Invite];
	messageCreate: [message: BushMessage];
	messageDelete: [message: BushMessage | PartialBushMessage];
	messageReactionRemoveAll: [message: BushMessage | PartialBushMessage, reactions: Collection<string, BushMessageReaction>];
	messageReactionRemoveEmoji: [reaction: BushMessageReaction | PartialBushMessageReaction];
	messageDeleteBulk: [messages: Collection<Snowflake, BushMessage | PartialBushMessage>];
	messageReactionAdd: [reaction: BushMessageReaction | PartialBushMessageReaction, user: BushUser | PartialBushUser];
	messageReactionRemove: [reaction: BushMessageReaction | PartialBushMessageReaction, user: BushUser | PartialBushUser];
	messageUpdate: [oldMessage: BushMessage | PartialBushMessage, newMessage: BushMessage | PartialBushMessage];
	presenceUpdate: [oldPresence: BushPresence | null, newPresence: BushPresence];
	rateLimit: [rateLimitData: RateLimitData];
	invalidRequestWarning: [invalidRequestWarningData: InvalidRequestWarningData];
	ready: [client: BushClient<true>];
	invalidated: [];
	roleCreate: [role: BushRole];
	roleDelete: [role: BushRole];
	roleUpdate: [oldRole: BushRole, newRole: BushRole];
	threadCreate: [thread: BushThreadChannel];
	threadDelete: [thread: BushThreadChannel];
	threadListSync: [threads: Collection<Snowflake, BushThreadChannel>];
	threadMemberUpdate: [oldMember: BushThreadMember, newMember: BushThreadMember];
	threadMembersUpdate: [oldMembers: Collection<Snowflake, BushThreadMember>, newMembers: Collection<Snowflake, BushThreadMember>];
	threadUpdate: [oldThread: BushThreadChannel, newThread: BushThreadChannel];
	typingStart: [typing: Typing];
	userUpdate: [oldUser: BushUser | PartialBushUser, newUser: BushUser];
	voiceStateUpdate: [oldState: BushVoiceState, newState: BushVoiceState];
	webhookUpdate: [channel: BushTextChannel];
	interactionCreate: [interaction: Interaction];
	shardError: [error: Error, shardId: number];
	shardReady: [shardId: number, unavailableGuilds: Set<Snowflake> | undefined];
	shardReconnecting: [shardId: number];
	shardResume: [shardId: number, replayedEvents: number];
	stageInstanceCreate: [stageInstance: BushStageInstance];
	stageInstanceUpdate: [oldStageInstance: BushStageInstance | null, newStageInstance: BushStageInstance];
	stageInstanceDelete: [stageInstance: BushStageInstance];
	stickerCreate: [sticker: Sticker];
	stickerDelete: [sticker: Sticker];
	stickerUpdate: [oldSticker: Sticker, newSticker: Sticker];
	guildScheduledEventCreate: [guildScheduledEvent: GuildScheduledEvent];
	guildScheduledEventUpdate: [oldGuildScheduledEvent: GuildScheduledEvent, newGuildScheduledEvent: GuildScheduledEvent];
	guildScheduledEventDelete: [guildScheduledEvent: GuildScheduledEvent];
	guildScheduledEventUserAdd: [guildScheduledEvent: GuildScheduledEvent, user: BushUser];
	guildScheduledEventUserRemove: [guildScheduledEvent: GuildScheduledEvent, user: BushUser];
	/* Custom */
	bushBan: [
		victim: BushGuildMember | BushUser,
		moderator: BushUser,
		guild: BushGuild,
		reason: string | undefined,
		caseID: string,
		duration: number,
		dmSuccess?: boolean,
		evidence?: string
	];
	bushBlock: [
		victim: BushGuildMember,
		moderator: BushUser,
		guild: BushGuild,
		reason: string | undefined,
		caseID: string,
		duration: number,
		dmSuccess: boolean,
		channel: BushGuildTextBasedChannel,
		evidence?: string
	];
	bushKick: [
		victim: BushGuildMember,
		moderator: BushUser,
		guild: BushGuild,
		reason: string | undefined,
		caseID: string,
		dmSuccess: boolean,
		evidence?: string
	];
	bushMute: [
		victim: BushGuildMember,
		moderator: BushUser,
		guild: BushGuild,
		reason: string | undefined,
		caseID: string,
		duration: number,
		dmSuccess: boolean,
		evidence?: string
	];
	bushPunishRole: [
		victim: BushGuildMember,
		moderator: BushUser,
		guild: BushGuild,
		reason: string | undefined,
		caseID: string,
		duration: number,
		role: BushRole,
		evidence?: string
	];
	bushPunishRoleRemove: [
		victim: BushGuildMember,
		moderator: BushUser,
		guild: BushGuild,
		reason: string | undefined,
		caseID: string,
		role: BushRole,
		evidence?: string
	];
	bushPurge: [
		moderator: BushUser,
		guild: BushGuild,
		channel: BushTextChannel | BushNewsChannel | BushThreadChannel,
		messages: Collection<Snowflake, BushMessage>
	];
	bushRemoveTimeout: [
		victim: BushGuildMember,
		moderator: BushUser,
		guild: BushGuild,
		reason: string | undefined,
		caseID: string,
		dmSuccess: boolean,
		evidence?: string
	];
	bushTimeout: [
		victim: BushGuildMember,
		moderator: BushUser,
		guild: BushGuild,
		reason: string | undefined,
		caseID: string,
		duration: number,
		dmSuccess: boolean,
		evidence?: string
	];
	bushUnban: [
		victim: BushUser,
		moderator: BushUser,
		guild: BushGuild,
		reason: string | undefined,
		caseID: string,
		dmSuccess: boolean,
		evidence?: string
	];
	bushUnblock: [
		victim: BushGuildMember | BushUser,
		moderator: BushUser,
		guild: BushGuild,
		reason: string | undefined,
		caseID: string,
		dmSuccess: boolean,
		channel: BushGuildTextBasedChannel,
		evidence?: string
	];
	bushUnmute: [
		victim: BushGuildMember,
		moderator: BushUser,
		guild: BushGuild,
		reason: string | undefined,
		caseID: string,
		dmSuccess: boolean,
		evidence?: string
	];
	bushUpdateModlog: [
		moderator: BushGuildMember,
		modlogID: string,
		key: 'evidence' | 'hidden',
		oldModlog: string | boolean,
		newModlog: string | boolean
	];
	bushUpdateSettings: [
		setting: Setting,
		guild: BushGuild,
		oldValue: Guild[Setting],
		newValue: Guild[Setting],
		moderator?: BushGuildMember
	];
	bushWarn: [
		victim: BushGuildMember,
		moderator: BushUser,
		guild: BushGuild,
		reason: string | undefined,
		caseID: string,
		dmSuccess: boolean,
		evidence?: string
	];
	bushLevelUpdate: [
		member: BushGuildMember,
		oldLevel: number,
		newLevel: number,
		currentXp: number,
		message: BushMessage & { guild: BushGuild }
	];
	bushLockdown: [
		moderator: BushGuildMember,
		reason: string | undefined,
		channelsSuccessMap: Collection<Snowflake, boolean>,
		all?: boolean
	];
	bushUnlockdown: [
		moderator: BushGuildMember,
		reason: string | undefined,
		channelsSuccessMap: Collection<Snowflake, boolean>,
		all?: boolean
	];
}

type Setting = GuildSettings | 'enabledFeatures' | 'blacklistedChannels' | 'blacklistedUsers' | 'disabledCommands';