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
|
import type {
BushApplicationCommand,
BushClient,
BushDMChannel,
BushGuild,
BushGuildBan,
BushGuildChannel,
BushGuildEmoji,
BushGuildMember,
BushMessage,
BushMessageReaction,
BushNewsChannel,
BushPresence,
BushRole,
BushStageInstance,
BushTextBasedChannels,
BushTextChannel,
BushThreadChannel,
BushThreadMember,
BushUser,
BushVoiceState,
Guild,
GuildSettings,
PartialBushGuildMember,
PartialBushMessage,
PartialBushMessageReaction,
PartialBushUser
} from '#lib';
import type { AkairoClientEvents } from 'discord-akairo';
import type {
Collection,
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: BushGuildChannel];
channelDelete: [channel: BushDMChannel | BushGuildChannel];
channelPinsUpdate: [channel: BushTextBasedChannels, date: Date];
channelUpdate: [
oldChannel: BushDMChannel | BushGuildChannel,
newChannel: BushDMChannel | BushGuildChannel
];
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];
/* Custom */
bushBan: [
victim: BushGuildMember | BushUser,
moderator: BushUser,
guild: BushGuild,
reason: string | undefined,
caseID: string,
duration: number,
dmSuccess?: boolean,
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,
caseID: string,
reason: string | undefined,
role: BushRole,
evidence?: string
];
bushPurge: [
moderator: BushUser,
guild: BushGuild,
channel: BushTextChannel | BushNewsChannel | BushThreadChannel,
messages: Collection<Snowflake, BushMessage>
];
bushUnban: [
victim: BushUser,
moderator: BushUser,
guild: BushGuild,
reason: string | undefined,
caseID: string,
dmSuccess: boolean,
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 }
];
}
type Setting =
| GuildSettings
| 'enabledFeatures'
| 'blacklistedChannels'
| 'blacklistedUsers'
| 'disabledCommands';
|