+21
-49
src/event_handler/kitten.rs
+21
-49
src/event_handler/kitten.rs
···
1
1
use color_eyre::eyre::{eyre, Result};
2
2
use poise::serenity_prelude::{Context, FullEvent};
3
3
use reqwest::Client;
4
-
use serenity::all::{ChannelId, Member, PartialMember, RoleId, UserId};
4
+
use serenity::all::{ChannelId, Member, RoleId, UserId};
5
5
6
6
pub async fn handle(ctx: &Context, event: &FullEvent, _client: &Client) -> Result<()> {
7
7
if let FullEvent::GuildMemberAddition { new_member } = event {
8
+
if new_member.guild_id != 1095080242219073606 {
9
+
return Ok(());
10
+
}
11
+
12
+
if new_member.user.bot {
13
+
return Ok(());
14
+
}
15
+
8
16
warn_onboarding(ctx, &new_member.user.id).await?;
9
-
} else if let FullEvent::GuildMemberUpdate {
17
+
}
18
+
19
+
if let FullEvent::GuildMemberUpdate {
10
20
old_if_available: _,
11
-
new,
21
+
new: Some(member),
12
22
event: _,
13
23
} = event
14
24
{
15
-
if let Some(member) = new {
16
-
if member.user.bot {
17
-
return Ok(());
18
-
}
19
-
// check if the user does not have the kitten role
20
-
if !member.roles.iter().any(|role| *role == 1249814690486423612) {
21
-
// check if the user has the pronouns role
22
-
if member
23
-
.roles
24
-
.iter()
25
-
.filter(|role| is_pronouns_role(**role))
26
-
.count()
27
-
> 0
28
-
{
29
-
add_kitten_role(ctx, member).await?;
30
-
}
31
-
}
32
-
}
33
-
} else if let FullEvent::Message { new_message } = event {
34
-
let user = &new_message.author;
35
-
let partial_member: PartialMember = user
36
-
.member
37
-
.clone()
38
-
.ok_or(eyre!("Failed to get member"))?
39
-
.as_mut()
40
-
.to_owned();
41
-
let member = Member::from(partial_member);
42
25
if member.user.bot {
43
26
return Ok(());
44
27
}
45
-
// check if the user has the kitten role
46
-
if member.roles.iter().any(|role| *role == 1249814690486423612) {
47
-
// check if the user does not have pronouns selected
28
+
29
+
// check if the user does not have the kitten role
30
+
if !member.roles.iter().any(|role| *role == 1249814690486423612) {
31
+
// check if the user has the pronouns role
48
32
if member
49
33
.roles
50
34
.iter()
51
35
.filter(|role| is_pronouns_role(**role))
52
36
.count()
53
-
== 0
37
+
> 0
54
38
{
55
-
// delete the message
56
-
new_message
57
-
.delete(ctx)
58
-
.await
59
-
.map_err(|e| eyre!("Failed to delete message: {}", e))?;
60
-
61
-
// send a message
62
-
warn_onboarding(ctx, &user.id).await?;
63
-
64
-
// remove the kitten role
65
-
66
-
member
67
-
.remove_role(ctx, 1249814690486423612)
68
-
.await
69
-
.map_err(|e| eyre!("Failed to remove role: {}", e))?;
39
+
add_kitten_role(ctx, member).await?;
70
40
}
71
41
}
72
42
}
43
+
73
44
Ok(())
74
45
}
75
46
···
82
53
),
83
54
)
84
55
.await?;
56
+
85
57
Ok(())
86
58
}
87
59