mirror of
https://github.com/revanced/revanced-discord-bot.git
synced 2025-05-20 14:37:05 +02:00
fix: send error replies as ephemeral (#71)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
This commit is contained in:
parent
770f61f502
commit
cc83a390df
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -1347,7 +1347,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "revanced-discord-bot"
|
name = "revanced-discord-bot"
|
||||||
version = "2.5.0"
|
version = "2.5.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64 0.21.2",
|
"base64 0.21.2",
|
||||||
"bson",
|
"bson",
|
||||||
|
@ -5,7 +5,7 @@ homepage = "https://revanced.app"
|
|||||||
license = "GPL-3.0"
|
license = "GPL-3.0"
|
||||||
name = "revanced-discord-bot"
|
name = "revanced-discord-bot"
|
||||||
repository = "https://github.com/revanced/revanced-discord-bot"
|
repository = "https://github.com/revanced/revanced-discord-bot"
|
||||||
version = "2.5.0"
|
version = "2.5.1"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[profile.release]
|
[profile.release]
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
use std::cmp;
|
use std::cmp;
|
||||||
use std::sync::Arc;
|
use std::sync::{Arc, RwLock};
|
||||||
|
|
||||||
use mongodb::options::FindOptions;
|
use mongodb::options::FindOptions;
|
||||||
use poise::serenity_prelude::{ChannelId, GuildChannel, GuildId, Mentionable, User, UserId};
|
use poise::serenity_prelude::{ChannelId, GuildChannel, GuildId, Mentionable, User, UserId};
|
||||||
@ -123,6 +123,8 @@ pub async fn respond_moderation<'a>(
|
|||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
let current_user = ctx.serenity_context().http.get_current_user().await?;
|
let current_user = ctx.serenity_context().http.get_current_user().await?;
|
||||||
|
|
||||||
|
let send_ephemeral = RwLock::new(false);
|
||||||
|
|
||||||
let create_embed = |f: &mut serenity::CreateEmbed| {
|
let create_embed = |f: &mut serenity::CreateEmbed| {
|
||||||
let mut moderated_user: Option<&User> = None;
|
let mut moderated_user: Option<&User> = None;
|
||||||
|
|
||||||
@ -131,18 +133,21 @@ pub async fn respond_moderation<'a>(
|
|||||||
moderated_user = Some(user);
|
moderated_user = Some(user);
|
||||||
|
|
||||||
let embed = match error {
|
let embed = match error {
|
||||||
Some(err) => f
|
Some(err) => {
|
||||||
.title(format!("Failed to mute {}", user.tag()))
|
*send_ephemeral.write().unwrap() = true;
|
||||||
.field("Exception", err.to_string(), false)
|
|
||||||
.field(
|
f.title(format!("Failed to mute {}", user.tag()))
|
||||||
"Action",
|
.field("Exception", err.to_string(), false)
|
||||||
format!(
|
.field(
|
||||||
"{} was muted by {} but failed",
|
"Action",
|
||||||
user.mention(),
|
format!(
|
||||||
author.mention()
|
"{} was muted by {} but failed",
|
||||||
),
|
user.mention(),
|
||||||
false,
|
author.mention()
|
||||||
),
|
),
|
||||||
|
false,
|
||||||
|
)
|
||||||
|
},
|
||||||
None => f.title(format!("Muted {}", user.tag())).field(
|
None => f.title(format!("Muted {}", user.tag())).field(
|
||||||
"Action",
|
"Action",
|
||||||
format!("{} was muted by {}", user.mention(), author.mention()),
|
format!("{} was muted by {}", user.mention(), author.mention()),
|
||||||
@ -160,18 +165,21 @@ pub async fn respond_moderation<'a>(
|
|||||||
ModerationKind::Unmute(user, author, error) => {
|
ModerationKind::Unmute(user, author, error) => {
|
||||||
moderated_user = Some(user);
|
moderated_user = Some(user);
|
||||||
match error {
|
match error {
|
||||||
Some(err) => f
|
Some(err) => {
|
||||||
.title(format!("Failed to unmute {}", user.tag()))
|
*send_ephemeral.write().unwrap() = true;
|
||||||
.field("Exception", err.to_string(), false)
|
|
||||||
.field(
|
f.title(format!("Failed to unmute {}", user.tag()))
|
||||||
"Action",
|
.field("Exception", err.to_string(), false)
|
||||||
format!(
|
.field(
|
||||||
"{} was unmuted by {} but failed",
|
"Action",
|
||||||
user.mention(),
|
format!(
|
||||||
author.mention()
|
"{} was unmuted by {} but failed",
|
||||||
),
|
user.mention(),
|
||||||
false,
|
author.mention()
|
||||||
),
|
),
|
||||||
|
false,
|
||||||
|
)
|
||||||
|
},
|
||||||
None => f.title(format!("Unmuted {}", user.tag())).field(
|
None => f.title(format!("Unmuted {}", user.tag())).field(
|
||||||
"Action",
|
"Action",
|
||||||
format!("{} was unmuted by {}", user.mention(), author.mention()),
|
format!("{} was unmuted by {}", user.mention(), author.mention()),
|
||||||
@ -182,18 +190,21 @@ pub async fn respond_moderation<'a>(
|
|||||||
ModerationKind::Ban(user, author, reason, error) => {
|
ModerationKind::Ban(user, author, reason, error) => {
|
||||||
moderated_user = Some(user);
|
moderated_user = Some(user);
|
||||||
let f = match error {
|
let f = match error {
|
||||||
Some(err) => f
|
Some(err) => {
|
||||||
.title(format!("Failed to ban {}", user.tag()))
|
*send_ephemeral.write().unwrap() = true;
|
||||||
.field("Exception", err.to_string(), false)
|
|
||||||
.field(
|
f.title(format!("Failed to ban {}", user.tag()))
|
||||||
"Action",
|
.field("Exception", err.to_string(), false)
|
||||||
format!(
|
.field(
|
||||||
"{} was banned by {} but failed",
|
"Action",
|
||||||
user.mention(),
|
format!(
|
||||||
author.mention()
|
"{} was banned by {} but failed",
|
||||||
),
|
user.mention(),
|
||||||
false,
|
author.mention()
|
||||||
),
|
),
|
||||||
|
false,
|
||||||
|
)
|
||||||
|
},
|
||||||
None => f.title(format!("Banned {}", user.tag())).field(
|
None => f.title(format!("Banned {}", user.tag())).field(
|
||||||
"Action",
|
"Action",
|
||||||
format!("{} was banned by {}", user.mention(), author.mention()),
|
format!("{} was banned by {}", user.mention(), author.mention()),
|
||||||
@ -209,18 +220,21 @@ pub async fn respond_moderation<'a>(
|
|||||||
ModerationKind::Unban(user, author, error) => {
|
ModerationKind::Unban(user, author, error) => {
|
||||||
moderated_user = Some(user);
|
moderated_user = Some(user);
|
||||||
match error {
|
match error {
|
||||||
Some(err) => f
|
Some(err) => {
|
||||||
.title(format!("Failed to unban {}", user.tag()))
|
*send_ephemeral.write().unwrap() = true;
|
||||||
.field("Exception", err.to_string(), false)
|
|
||||||
.field(
|
f.title(format!("Failed to unban {}", user.tag()))
|
||||||
"Action",
|
.field("Exception", err.to_string(), false)
|
||||||
format!(
|
.field(
|
||||||
"{} was unbanned by {} but failed",
|
"Action",
|
||||||
user.mention(),
|
format!(
|
||||||
author.mention()
|
"{} was unbanned by {} but failed",
|
||||||
),
|
user.mention(),
|
||||||
false,
|
author.mention()
|
||||||
),
|
),
|
||||||
|
false,
|
||||||
|
)
|
||||||
|
},
|
||||||
None => f.title(format!("Unbanned {}", user.tag())).field(
|
None => f.title(format!("Unbanned {}", user.tag())).field(
|
||||||
"Action",
|
"Action",
|
||||||
format!("{} was unbanned by {}", user.mention(), author.mention()),
|
format!("{} was unbanned by {}", user.mention(), author.mention()),
|
||||||
@ -229,18 +243,21 @@ pub async fn respond_moderation<'a>(
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
ModerationKind::Lock(channel, author, error) => match error {
|
ModerationKind::Lock(channel, author, error) => match error {
|
||||||
Some(err) => f
|
Some(err) => {
|
||||||
.title(format!("Failed to lock {} ", channel.name()))
|
*send_ephemeral.write().unwrap() = true;
|
||||||
.field("Exception", err.to_string(), false)
|
|
||||||
.field(
|
f.title(format!("Failed to lock {} ", channel.name()))
|
||||||
"Action",
|
.field("Exception", err.to_string(), false)
|
||||||
format!(
|
.field(
|
||||||
"{} was locked by {} but failed",
|
"Action",
|
||||||
channel.mention(),
|
format!(
|
||||||
author.mention()
|
"{} was locked by {} but failed",
|
||||||
),
|
channel.mention(),
|
||||||
false,
|
author.mention()
|
||||||
),
|
),
|
||||||
|
false,
|
||||||
|
)
|
||||||
|
},
|
||||||
None => f
|
None => f
|
||||||
.title(format!("Locked {}", channel.name()))
|
.title(format!("Locked {}", channel.name()))
|
||||||
.description(
|
.description(
|
||||||
@ -253,18 +270,21 @@ pub async fn respond_moderation<'a>(
|
|||||||
),
|
),
|
||||||
},
|
},
|
||||||
ModerationKind::Unlock(channel, author, error) => match error {
|
ModerationKind::Unlock(channel, author, error) => match error {
|
||||||
Some(err) => f
|
Some(err) => {
|
||||||
.title(format!("Failed to unlock {}", channel.name()))
|
*send_ephemeral.write().unwrap() = true;
|
||||||
.field("Exception", err.to_string(), false)
|
|
||||||
.field(
|
f.title(format!("Failed to unlock {}", channel.name()))
|
||||||
"Action",
|
.field("Exception", err.to_string(), false)
|
||||||
format!(
|
.field(
|
||||||
"{} was unlocked by {} but failed",
|
"Action",
|
||||||
channel.mention(),
|
format!(
|
||||||
author.mention()
|
"{} was unlocked by {} but failed",
|
||||||
),
|
channel.mention(),
|
||||||
false,
|
author.mention()
|
||||||
),
|
),
|
||||||
|
false,
|
||||||
|
)
|
||||||
|
},
|
||||||
None => f
|
None => f
|
||||||
.title(format!("Unlocked {}", channel.name()))
|
.title(format!("Unlocked {}", channel.name()))
|
||||||
.description("Restored original permission overwrites.")
|
.description("Restored original permission overwrites.")
|
||||||
@ -291,10 +311,12 @@ pub async fn respond_moderation<'a>(
|
|||||||
|
|
||||||
let reply = ctx
|
let reply = ctx
|
||||||
.send(|reply| {
|
.send(|reply| {
|
||||||
reply.embed(|embed| {
|
reply
|
||||||
create_embed(embed);
|
.embed(|embed| {
|
||||||
embed
|
create_embed(embed);
|
||||||
})
|
embed
|
||||||
|
})
|
||||||
|
.ephemeral(*send_ephemeral.read().unwrap())
|
||||||
})
|
})
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user