@@ -188,7 +188,7 @@ fn app() -> Result<()> {
188
188
} ) ;
189
189
190
190
let mut client = Client :: new_with_extras ( & config. discord_token , |e| {
191
- e. raw_event_handler ( Events { cmds } ) ;
191
+ e. event_handler ( Events { cmds } ) ;
192
192
e
193
193
} ) ?;
194
194
@@ -232,63 +232,66 @@ struct Events {
232
232
cmds : Commands ,
233
233
}
234
234
235
- impl RawEventHandler for Events {
236
- fn raw_event ( & self , cx : Context , event : Event ) {
237
- match event {
238
- Event :: Ready ( mut ev) => {
239
- info ! ( "{} connected to discord" , ev. ready. user. name) ;
235
+ impl EventHandler for Events {
236
+ fn ready ( & self , cx : Context , ready : Ready ) {
237
+ info ! ( "{} connected to discord" , ready. user. name) ;
240
238
241
- let mut cache = cx. cache . write ( ) ;
242
- cache . update ( & mut ev ) ;
243
- drop ( cache ) ;
239
+ let mut data = cx. data . write ( ) ;
240
+ data . insert :: < CommandHistory > ( IndexMap :: new ( ) ) ;
241
+ drop ( data ) ;
244
242
245
- let mut data = cx. data . write ( ) ;
246
- data. insert :: < CommandHistory > ( IndexMap :: new ( ) ) ;
247
- drop ( data) ;
243
+ ban:: start_cleanup_thread ( cx) ;
244
+ }
248
245
249
- ban:: start_cleanup_thread ( cx) ;
250
- }
251
- Event :: MessageCreate ( ev) => {
252
- self . cmds . execute ( cx, & ev. message ) ;
253
- }
254
- Event :: MessageUpdate ( ev) => {
255
- let age = ev. timestamp . and_then ( |create| {
256
- ev. edited_timestamp
257
- . and_then ( |edit| edit. signed_duration_since ( create) . to_std ( ) . ok ( ) )
258
- } ) ;
259
-
260
- if age. is_some ( ) && age. unwrap ( ) < MESSAGE_AGE_MAX {
261
- let mut msg = CustomMessage :: new ( ) ;
262
- msg. id ( ev. id )
263
- . channel_id ( ev. channel_id )
264
- . content ( ev. content . unwrap_or_else ( || String :: new ( ) ) ) ;
265
-
266
- let msg = msg. build ( ) ;
267
- info ! ( "sending edited message - {:?}" , msg. content) ;
268
- self . cmds . execute ( cx, & msg) ;
269
- }
270
- }
271
- Event :: MessageDelete ( ev) => {
272
- let mut data = cx. data . write ( ) ;
273
- let history = data. get_mut :: < CommandHistory > ( ) . unwrap ( ) ;
274
- if let Some ( response_id) = history. remove ( & ev. message_id ) {
275
- info ! ( "deleting message: {:?}" , response_id) ;
276
- let _ = ev. channel_id . delete_message ( & cx, response_id) ;
277
- }
278
- }
279
- Event :: ReactionAdd ( ev) => {
280
- if let Err ( e) = welcome:: assign_talk_role ( & cx, & ev) {
281
- error ! ( "{}" , e) ;
282
- }
283
- }
284
- Event :: GuildBanRemove ( ev) => {
285
- if let Err ( e) =
286
- ban:: save_unban ( format ! ( "{}" , ev. user. id) , format ! ( "{}" , ev. guild_id) )
287
- {
288
- error ! ( "{}" , e) ;
289
- }
290
- }
291
- _ => ( ) ,
246
+ fn message ( & self , cx : Context , message : Message ) {
247
+ self . cmds . execute ( cx, & message) ;
248
+ }
249
+
250
+ fn message_update (
251
+ & self ,
252
+ cx : Context ,
253
+ _: Option < Message > ,
254
+ _: Option < Message > ,
255
+ ev : MessageUpdateEvent ,
256
+ ) {
257
+ let age = ev. timestamp . and_then ( |create| {
258
+ ev. edited_timestamp
259
+ . and_then ( |edit| edit. signed_duration_since ( create) . to_std ( ) . ok ( ) )
260
+ } ) ;
261
+
262
+ if age. is_some ( ) && age. unwrap ( ) < MESSAGE_AGE_MAX {
263
+ let mut msg = CustomMessage :: new ( ) ;
264
+ msg. id ( ev. id )
265
+ . channel_id ( ev. channel_id )
266
+ . content ( ev. content . unwrap_or_else ( || String :: new ( ) ) ) ;
267
+
268
+ let msg = msg. build ( ) ;
269
+ info ! (
270
+ "sending edited message - {:?} {:?}" ,
271
+ msg. content, msg. author
272
+ ) ;
273
+ self . cmds . execute ( cx, & msg) ;
274
+ }
275
+ }
276
+
277
+ fn message_delete ( & self , cx : Context , channel_id : ChannelId , message_id : MessageId ) {
278
+ let mut data = cx. data . write ( ) ;
279
+ let history = data. get_mut :: < CommandHistory > ( ) . unwrap ( ) ;
280
+ if let Some ( response_id) = history. remove ( & message_id) {
281
+ info ! ( "deleting message: {:?}" , response_id) ;
282
+ let _ = channel_id. delete_message ( & cx, response_id) ;
283
+ }
284
+ }
285
+
286
+ fn reaction_add ( & self , cx : Context , reaction : Reaction ) {
287
+ if let Err ( e) = welcome:: assign_talk_role ( & cx, & reaction) {
288
+ error ! ( "{}" , e) ;
289
+ }
290
+ }
291
+
292
+ fn guild_ban_removal ( & self , _cx : Context , guild_id : GuildId , user : User ) {
293
+ if let Err ( e) = ban:: save_unban ( format ! ( "{}" , user. id) , format ! ( "{}" , guild_id) ) {
294
+ error ! ( "{}" , e) ;
292
295
}
293
296
}
294
297
}
0 commit comments