Skip to content

Commit dfc18cd

Browse files
committed
reverted back to EventHandler
1 parent 6b2f043 commit dfc18cd

File tree

2 files changed

+62
-61
lines changed

2 files changed

+62
-61
lines changed

src/main.rs

Lines changed: 58 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ fn app() -> Result<()> {
188188
});
189189

190190
let mut client = Client::new_with_extras(&config.discord_token, |e| {
191-
e.raw_event_handler(Events { cmds });
191+
e.event_handler(Events { cmds });
192192
e
193193
})?;
194194

@@ -232,63 +232,66 @@ struct Events {
232232
cmds: Commands,
233233
}
234234

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);
240238

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);
244242

245-
let mut data = cx.data.write();
246-
data.insert::<CommandHistory>(IndexMap::new());
247-
drop(data);
243+
ban::start_cleanup_thread(cx);
244+
}
248245

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);
292295
}
293296
}
294297
}

src/welcome.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,7 @@ pub(crate) fn post_message(args: Args) -> Result<()> {
6363
Ok(())
6464
}
6565

66-
pub(crate) fn assign_talk_role(cx: &Context, ev: &ReactionAddEvent) -> Result<()> {
67-
let reaction = &ev.reaction;
68-
66+
pub(crate) fn assign_talk_role(cx: &Context, reaction: &Reaction) -> Result<()> {
6967
let channel = reaction.channel(cx)?;
7068
let channel_id = ChannelId::from(&channel);
7169
let message = reaction.message(cx)?;
@@ -114,13 +112,13 @@ pub(crate) fn assign_talk_role(cx: &Context, ev: &ReactionAddEvent) -> Result<()
114112

115113
// Requires ManageMessage permission
116114
if let Some((_, _, user_id)) = me {
117-
if ev.reaction.user_id.0.to_string() != user_id {
118-
ev.reaction.delete(cx)?;
115+
if reaction.user_id.0.to_string() != user_id {
116+
reaction.delete(cx)?;
119117
}
120118
}
121119
}
122120
} else {
123-
ev.reaction.delete(cx)?;
121+
reaction.delete(cx)?;
124122
}
125123
}
126124
}

0 commit comments

Comments
 (0)