Skip to content

Commit b113588

Browse files
committed
refactor: ♻️ use highest role instead of first role
1 parent dc144ab commit b113588

1 file changed

Lines changed: 16 additions & 5 deletions

File tree

src/events/message.rs

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -269,17 +269,28 @@ impl Handler {
269269
};
270270

271271
// Find intersection between user roles and guild rewards
272-
let user_role = guild_rewards
272+
let user_roles = guild_rewards
273273
.iter()
274274
.filter(|reward| {
275275
member.roles.contains(&RoleId::new(reward.role as u64))
276276
})
277277
.collect::<Vec<_>>();
278-
let user_role = user_role.first();
279278

280-
if let Some(user_role) = user_role {
281-
let user_xp =
282-
(50 * (user_role.level * user_role.level)) + (25 * user_role.level);
279+
let mut highest_role: Option<i64> = None;
280+
for user_role in user_roles {
281+
let level = user_role.level;
282+
283+
if let Some(highest_role_level) = highest_role {
284+
if level > highest_role_level {
285+
highest_role = Some(level);
286+
}
287+
} else {
288+
highest_role = Some(level);
289+
}
290+
}
291+
292+
if let Some(level) = highest_role {
293+
let user_xp = (50 * (level * level)) + (25 * level);
283294
match sqlx::query!(
284295
"INSERT INTO user_xp (guild_id, user_id, xp) VALUES ($1, $2, $3)",
285296
guild_id,

0 commit comments

Comments
 (0)