mirror of
https://github.com/revanced/revanced-discord-bot.git
synced 2025-04-30 06:24:27 +02:00
fix(moderation): properly convert UserId to Member (#50)
This commit is contained in:
parent
8376eb9b4e
commit
05ff0a27d2
@ -7,6 +7,7 @@ use poise::serenity_prelude::{
|
||||
use tracing::{debug, error, trace};
|
||||
|
||||
use crate::db::model::{LockedChannel, Muted};
|
||||
use crate::utils::bot::get_member;
|
||||
use crate::utils::macros::to_user;
|
||||
use crate::utils::moderation::{
|
||||
ban_moderation, queue_unmute_member, respond_moderation, BanKind, ModerationKind,
|
||||
@ -244,7 +245,6 @@ pub async fn mute(
|
||||
let guild_id = ctx.guild_id().unwrap();
|
||||
|
||||
let discord = ctx.discord();
|
||||
let cache = &discord.cache;
|
||||
|
||||
let unmute_time = if !mute_duration.is_zero() {
|
||||
Some((now + mute_duration).timestamp() as u64)
|
||||
@ -260,7 +260,7 @@ pub async fn mute(
|
||||
};
|
||||
|
||||
let result = async {
|
||||
if let Some(mut member) = cache.member(guild_id, id) {
|
||||
if let Some(mut member) = get_member(discord, guild_id, id).await? {
|
||||
let (is_currently_muted, removed_roles) =
|
||||
crate::utils::moderation::mute_moderation(&ctx, &mut member, mute).await?;
|
||||
// Prevent the bot from overriding the "take" field.
|
||||
|
@ -13,3 +13,22 @@ pub fn load_configuration() -> Configuration {
|
||||
pub async fn get_data_lock(ctx: &serenity::Context) -> Arc<RwLock<Data>> {
|
||||
ctx.data.read().await.get::<Data>().unwrap().clone()
|
||||
}
|
||||
|
||||
pub async fn get_member(
|
||||
ctx: &serenity::Context,
|
||||
guild_id: serenity::GuildId,
|
||||
user_id: serenity::UserId,
|
||||
) -> serenity::Result<Option<serenity::Member>> {
|
||||
match guild_id.member(ctx, user_id).await {
|
||||
Ok(member) => Ok(Some(member)),
|
||||
Err(serenity::SerenityError::Http(err))
|
||||
if matches!(
|
||||
err.status_code(),
|
||||
Some(serenity::http::StatusCode::NOT_FOUND)
|
||||
) =>
|
||||
{
|
||||
Ok(None)
|
||||
},
|
||||
Err(err) => Err(err),
|
||||
}
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ use crate::db::database::Database;
|
||||
use crate::db::model::Muted;
|
||||
use crate::model::application::{Configuration, Mute};
|
||||
use crate::serenity::SerenityError;
|
||||
use crate::utils::bot::get_member;
|
||||
use crate::{Context, Error};
|
||||
|
||||
pub enum ModerationKind {
|
||||
@ -94,7 +95,7 @@ pub fn queue_unmute_member(
|
||||
.ok_or("User was not muted.")?;
|
||||
|
||||
// Update roles if they didn't leave the guild.
|
||||
if let Some(mut member) = ctx.cache.member(guild_id, user_id) {
|
||||
if let Some(mut member) = get_member(&ctx, guild_id, user_id).await? {
|
||||
let http = &ctx.http;
|
||||
|
||||
if let Some(taken_roles) = db_result.taken_roles {
|
||||
|
Loading…
x
Reference in New Issue
Block a user