Skip to content

Commit 4dc25f5

Browse files
committed
refactor: fix clippy warnings
1 parent 2bd0b1b commit 4dc25f5

File tree

3 files changed

+58
-59
lines changed

3 files changed

+58
-59
lines changed

src/bot/commands/unverify.rs

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,14 @@ pub async fn handle(
5858
};
5959

6060
// If targeting another user, require administrator permissions
61-
if target_user.id != user.id {
62-
if !is_admin(ctx, &command.member, guild_id, user.id).await? {
63-
let response = CreateInteractionResponse::Message(
64-
CreateInteractionResponseMessage::new()
65-
.content("You need administrator permissions to unverify other users.")
66-
.ephemeral(true),
67-
);
68-
command.create_response(&ctx.http, response).await?;
69-
return Ok(());
70-
}
61+
if target_user.id != user.id && !is_admin(ctx, &command.member, guild_id, user.id).await? {
62+
let response = CreateInteractionResponse::Message(
63+
CreateInteractionResponseMessage::new()
64+
.content("You need administrator permissions to unverify other users.")
65+
.ephemeral(true),
66+
);
67+
command.create_response(&ctx.http, response).await?;
68+
return Ok(());
7169
}
7270

7371
// Look up Keycloak user ID from Redis
@@ -108,12 +106,11 @@ pub async fn handle(
108106
// Remove verified role
109107
let member = guild_id.member(&ctx.http, target_user.id).await?;
110108

111-
if let Ok(role_config) = load_guild_role_config(&ctx.http, &mut conn, guild_id).await {
112-
if let Ok(verified_role) = role_config.get_verified_role() {
113-
if member.roles.contains(&verified_role) {
114-
member.remove_role(&ctx.http, verified_role, None).await?;
115-
}
116-
}
109+
if let Ok(role_config) = load_guild_role_config(&ctx.http, &mut conn, guild_id).await
110+
&& let Ok(verified_role) = role_config.get_verified_role()
111+
&& member.roles.contains(&verified_role)
112+
{
113+
member.remove_role(&ctx.http, verified_role, None).await?;
117114
}
118115

119116
let response = CreateInteractionResponse::Message(

src/bot/commands/verify.rs

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -131,29 +131,23 @@ pub async fn complete_verification(
131131
// Assign additional roles based on mode and user attributes
132132
if let Some(attrs) = keycloak_user.attributes.as_ref() {
133133
// Try to assign level-based role
134-
if role_config.should_assign_level_roles() {
135-
if let Some(level_values) = attrs.get("level") {
136-
if let Some(level) = level_values.first() {
137-
if let Some(level_role) = role_config.get_level_role(level) {
138-
if let Err(e) = member.add_role(http, level_role, None).await {
139-
tracing::warn!("Failed to assign level role {}: {}", level, e);
140-
}
141-
}
142-
}
143-
}
134+
if role_config.should_assign_level_roles()
135+
&& let Some(level_values) = attrs.get("level")
136+
&& let Some(level) = level_values.first()
137+
&& let Some(level_role) = role_config.get_level_role(level)
138+
&& let Err(e) = member.add_role(http, level_role, None).await
139+
{
140+
tracing::warn!("Failed to assign level role {}: {}", level, e);
144141
}
145142

146143
// Try to assign class-based role
147-
if role_config.should_assign_class_roles() {
148-
if let Some(class_values) = attrs.get("class") {
149-
if let Some(class) = class_values.first() {
150-
if let Some(class_role) = role_config.get_class_role(class) {
151-
if let Err(e) = member.add_role(http, class_role, None).await {
152-
tracing::warn!("Failed to assign class role {}: {}", class, e);
153-
}
154-
}
155-
}
156-
}
144+
if role_config.should_assign_class_roles()
145+
&& let Some(class_values) = attrs.get("class")
146+
&& let Some(class) = class_values.first()
147+
&& let Some(class_role) = role_config.get_class_role(class)
148+
&& let Err(e) = member.add_role(http, class_role, None).await
149+
{
150+
tracing::warn!("Failed to assign class role {}: {}", class, e);
157151
}
158152
}
159153

src/bot/role_config.rs

Lines changed: 31 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use crate::bot::Error;
22
use redis::AsyncCommands;
33
use serenity::all::{GuildId, Http, RoleId};
44
use std::collections::HashMap;
5+
use std::str::FromStr;
56

67
#[derive(Debug, Clone, PartialEq, Eq)]
78
pub enum RoleMode {
@@ -11,16 +12,20 @@ pub enum RoleMode {
1112
Custom,
1213
}
1314

14-
impl RoleMode {
15-
pub fn from_str(s: &str) -> Self {
16-
match s {
15+
impl FromStr for RoleMode {
16+
type Err = ();
17+
18+
fn from_str(s: &str) -> Result<Self, Self::Err> {
19+
Ok(match s {
1720
"levels" => Self::Levels,
1821
"classes" => Self::Classes,
1922
"custom" => Self::Custom,
2023
_ => Self::None,
21-
}
24+
})
2225
}
26+
}
2327

28+
impl RoleMode {
2429
pub fn as_str(&self) -> &str {
2530
match self {
2631
Self::None => "none",
@@ -57,21 +62,24 @@ impl GuildRoleConfig {
5762
// Get the role mode
5863
let role_mode_key = format!("guild:{}:role_mode", guild_id);
5964
let role_mode: Option<String> = redis.get(&role_mode_key).await?;
60-
let mode = RoleMode::from_str(&role_mode.unwrap_or_else(|| "none".to_string()));
65+
let mode = role_mode
66+
.unwrap_or_else(|| "none".to_string())
67+
.parse()
68+
.unwrap_or(RoleMode::None);
6169

6270
// Get level roles
6371
let mut level_roles = HashMap::new();
6472
for level in &["Undergrad", "Graduate"] {
6573
let key = format!("guild:{}:role:level:{}", guild_id, level);
66-
if let Ok(Some(role_id_str)) = redis.get::<_, Option<String>>(&key).await {
67-
if let Ok(role_id_u64) = role_id_str.parse::<u64>() {
68-
// Verify the role still exists
69-
let role_id = RoleId::new(role_id_u64);
70-
let roles = guild_id.roles(http).await?;
71-
72-
if roles.contains_key(&role_id) {
73-
level_roles.insert(level.to_string(), role_id);
74-
}
74+
if let Ok(Some(role_id_str)) = redis.get::<_, Option<String>>(&key).await
75+
&& let Ok(role_id_u64) = role_id_str.parse::<u64>()
76+
{
77+
// Verify the role still exists
78+
let role_id = RoleId::new(role_id_u64);
79+
let roles = guild_id.roles(http).await?;
80+
81+
if roles.contains_key(&role_id) {
82+
level_roles.insert(level.to_string(), role_id);
7583
}
7684
}
7785
}
@@ -88,15 +96,15 @@ impl GuildRoleConfig {
8896
"Doctoral",
8997
] {
9098
let key = format!("guild:{}:role:class:{}", guild_id, class);
91-
if let Ok(Some(role_id_str)) = redis.get::<_, Option<String>>(&key).await {
92-
if let Ok(role_id_u64) = role_id_str.parse::<u64>() {
93-
// Verify the role still exists
94-
let role_id = RoleId::new(role_id_u64);
95-
let roles = guild_id.roles(http).await?;
96-
97-
if roles.contains_key(&role_id) {
98-
class_roles.insert(class.to_string(), role_id);
99-
}
99+
if let Ok(Some(role_id_str)) = redis.get::<_, Option<String>>(&key).await
100+
&& let Ok(role_id_u64) = role_id_str.parse::<u64>()
101+
{
102+
// Verify the role still exists
103+
let role_id = RoleId::new(role_id_u64);
104+
let roles = guild_id.roles(http).await?;
105+
106+
if roles.contains_key(&role_id) {
107+
class_roles.insert(class.to_string(), role_id);
100108
}
101109
}
102110
}

0 commit comments

Comments
 (0)