aboutsummaryrefslogtreecommitdiff
path: root/src/handlers/x500_mapper.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/handlers/x500_mapper.rs')
-rw-r--r--src/handlers/x500_mapper.rs21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/handlers/x500_mapper.rs b/src/handlers/x500_mapper.rs
index f477e97..1dd8955 100644
--- a/src/handlers/x500_mapper.rs
+++ b/src/handlers/x500_mapper.rs
@@ -1,22 +1,31 @@
use serenity::{
- all::{GuildMemberUpdateEvent, Member},
+ all::{GuildMemberUpdateEvent, Member, UserId},
async_trait,
client::{Context, EventHandler},
};
+use sqlx::{Database, Pool};
/// A handler that notices people with an X.500 in their nicknames that matches a student's, and
/// records it in the database.
-pub struct X500Mapper;
+pub struct X500Mapper<DB: Database>(pub Pool<DB>);
+
+impl<DB: Database> X500Mapper<DB> {
+ async fn notice_member(&self, nick: &str, uid: UserId) {
+ dbg!((nick, uid));
+ }
+}
#[async_trait]
-impl EventHandler for X500Mapper {
+impl<DB: Database> EventHandler for X500Mapper<DB> {
async fn guild_member_update(
&self,
_ctx: Context,
- old_if_available: Option<Member>,
- new: Option<Member>,
+ _old_if_available: Option<Member>,
+ _new: Option<Member>,
event: GuildMemberUpdateEvent,
) {
- dbg!((old_if_available, new, event));
+ if let Some(nick) = event.nick {
+ self.notice_member(&nick, event.user.id).await
+ }
}
}