@@ -18,8 +18,9 @@ import type {
18
18
} from "#types" ;
19
19
20
20
import { AuthError , ConnectionError , NotConnectedError } from "./errors.js" ;
21
- import { escapeName , normalizeCommand , transformMessage , transformNickChangeInfo , transformSysMessage , transformUser , trimMessage } from "#utils/transforms.js" ;
21
+ import { normalizeCommand , transformUser , trimMessage } from "#utils/transforms.js" ;
22
22
import helpCommand from "./helpCommand.js" ;
23
+ import { applyMainEventHandlers } from "./eventHandlers.js" ;
23
24
24
25
let sheeshBots : string [ ] = [ ] ;
25
26
setInterval ( ( ) => {
@@ -34,7 +35,7 @@ setInterval( () => {
34
35
} , 10 * 60 * 1000 ) ;
35
36
36
37
export default class Client extends ( EventEmitter as unknown as new ( ) => TypedEmitter . default < ClientEvents > ) {
37
- private socket ?: MsgroomSocket ;
38
+ socket ?: MsgroomSocket ;
38
39
#name: string ;
39
40
server : string ;
40
41
@@ -154,109 +155,7 @@ export default class Client extends (EventEmitter as unknown as new () => TypedE
154
155
resolve ( ) ;
155
156
} ) ;
156
157
//#endregion connecting to the server
157
- } ) . then ( ( ) => {
158
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
159
- this . socket !
160
-
161
- //#region main events
162
- . on ( "werror" , reason => {
163
- this . emit ( "werror" , reason ) ;
164
- } )
165
- . on ( "message" , rawMessage => {
166
- let message = transformMessage ( rawMessage , this . users , this . unescapeMessages ) ;
167
-
168
- if ( this . isBlocked ( message . author . ID , message . author . sessionID , false ) ) return ;
169
-
170
- const messageFromSocialMediaBridgeMatch = / ^ \[ ( \w + ) \] < s t r o n g > ( \w + ) \( ( \d + ) \) < \/ s t r o n g > : \n ( .* ) / . exec ( message . content ) ;
171
- if ( messageFromSocialMediaBridgeMatch ) {
172
- const [ , socialMediaApp , name , ID , extractedMessage ] = messageFromSocialMediaBridgeMatch ;
173
- const originalMessage = message ;
174
- const socialMediaUser = {
175
- name,
176
- ID ,
177
- } ;
178
- const bridgedID = `BRIDGED-BY:${ originalMessage . author . ID } -FROM:${ socialMediaApp } -${ socialMediaUser . name } -${ socialMediaUser . ID } ` ;
179
- message = {
180
- type : message . type ,
181
- color : message . color ,
182
- content : extractedMessage ,
183
- date : message . date ,
184
- author : {
185
- color : message . author . color ,
186
- flags : [ ] ,
187
- ID : bridgedID ,
188
- sessionID : `${ bridgedID } -0` ,
189
- nickname : name ,
190
- escapedName : escapeName ( name ) ,
191
- } ,
192
- bridged : {
193
- originalMessage,
194
- socialMediaApp,
195
- socialMediaUser,
196
- } ,
197
- } ;
198
- }
199
-
200
- if ( this . isBlocked ( message . author ) ) return ;
201
-
202
- this . emit ( "message" , message ) ;
203
- void this . processCommands ( {
204
- message,
205
- send : ( ...args ) => void this . sendMessage ( ...args ) ,
206
- reply : ( ...args ) => void this . sendMessage ( `**@${ message . author . escapedName } **` , ...args ) ,
207
- } ) ;
208
- } )
209
- . on ( "sys-message" , rawSysMessage => {
210
- const sysMessage = transformSysMessage ( rawSysMessage ) ;
211
- this . emit ( "sys-message" , sysMessage ) ;
212
- //@ts -expect-error Don't worry, it's fine. Think about it, you'll understand.
213
- this . emit ( `sys-message-${ sysMessage . type } ` , sysMessage ) ;
214
- } )
215
- . on ( "nick-changed" , rawNickChangeInfo => {
216
- const nickChangeInfo = transformNickChangeInfo ( rawNickChangeInfo , this . users ) ;
217
-
218
- if ( nickChangeInfo . user . sessionID == this . sessionID ) this . #name = nickChangeInfo . newNickname ;
219
-
220
- nickChangeInfo . user . nickname = nickChangeInfo . newNickname ;
221
- nickChangeInfo . user . escapedName = escapeName ( nickChangeInfo . newNickname ) ;
222
-
223
- if ( this . isBlocked ( nickChangeInfo . user ) ) return ;
224
- this . emit ( "nick-change" , nickChangeInfo ) ;
225
- } )
226
- . on ( "user-join" , rawUser => {
227
- const user = transformUser ( rawUser ) ;
228
- this . users [ user . sessionID ] = user ;
229
-
230
- if ( this . isBlocked ( user ) ) return ;
231
- this . emit ( "user-join" , user ) ;
232
- } )
233
- . on ( "user-leave" , userLeaveInfo => {
234
- const user = this . users [ userLeaveInfo . session_id ] ;
235
-
236
- if ( ! this . isBlocked ( user ) ) this . emit ( "user-leave" , user ) ;
237
-
238
- // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
239
- delete this . users [ userLeaveInfo . session_id ] ;
240
- } )
241
- . on ( "user-update" , userUpdateInfo => {
242
- const user = this . users [ userUpdateInfo . user ] ;
243
-
244
- switch ( userUpdateInfo . type ) {
245
- case "tag-add" :
246
- if ( ! userUpdateInfo . tag ?. trim ( ) || ! userUpdateInfo . tagLabel ) return ;
247
-
248
- if ( ! user . flags . includes ( userUpdateInfo . tag ) ) user . flags . push ( userUpdateInfo . tag ) ;
249
-
250
- if ( this . isBlocked ( user ) ) return ;
251
- this . emit ( "tag-add" , {
252
- user,
253
- newTag : userUpdateInfo . tag ,
254
- newTagLabel : userUpdateInfo . tagLabel ,
255
- } ) ;
256
- }
257
- } ) ;
258
- //#endregion main events
259
- } ) ;
158
+ } ) . then ( ( ) => void applyMainEventHandlers ( this , name => this . #name = name ) ) ;
260
159
}
261
160
262
161
/**
0 commit comments