Block users from using external emoji (Fixes #2)
+ Scan incoming messages for emoji, if they are from an external server they are blocked + clippy + fmtmsg_refactor
parent
ea0be5c708
commit
2e5c102887
|
@ -474,11 +474,7 @@ async fn handle_errors(
|
|||
match command_result {
|
||||
Ok(()) => println!("Successfully processed command '{}'", command_name),
|
||||
Err(err) => {
|
||||
let reply_msg = format!(
|
||||
"Command '{}' returned an error. {}",
|
||||
command_name,
|
||||
err.to_string()
|
||||
);
|
||||
let reply_msg = format!("Command '{}' returned an error. {}", command_name, err,);
|
||||
println!("{}", reply_msg);
|
||||
msg.reply(&ctx.http, reply_msg).await.unwrap();
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ use serenity::client::{Context, EventHandler};
|
|||
use serenity::http::AttachmentType;
|
||||
use serenity::model::channel::Message;
|
||||
use serenity::model::gateway::Ready;
|
||||
use serenity::utils::parse_emoji;
|
||||
|
||||
use crate::discord::helper::send_webhook_msg_to_player_channels;
|
||||
use crate::game::global_data::GlobalData;
|
||||
|
@ -40,6 +41,23 @@ impl EventHandler for Handler {
|
|||
let guild = msg.guild(&ctx.cache).await.unwrap();
|
||||
let user_msg = msg.content.clone();
|
||||
|
||||
let re = regex::Regex::new(r"<a?:.+:\d+>").unwrap();
|
||||
|
||||
for emoji_cap in re.captures_iter(&user_msg) {
|
||||
if let Some(emoji) = parse_emoji(&emoji_cap[0]) {
|
||||
if !msg
|
||||
.guild(&ctx.cache)
|
||||
.await
|
||||
.unwrap()
|
||||
.emojis
|
||||
.contains_key(&emoji.id)
|
||||
{
|
||||
msg.reply(&ctx.http, "Your messages contains custom emojis from outside this guild and has been blocked.").await.unwrap();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let attachments: Vec<AttachmentType> = msg
|
||||
.attachments
|
||||
.iter()
|
||||
|
|
|
@ -114,7 +114,6 @@ pub async fn send_webhook_msg(
|
|||
msg: &str,
|
||||
attachment: Option<Vec<AttachmentType<'_>>>,
|
||||
) -> error::Result<()> {
|
||||
|
||||
let webhook = http.get_webhook(webhook_id).await?;
|
||||
|
||||
webhook
|
||||
|
|
|
@ -30,7 +30,7 @@ impl Display for WoxlfError {
|
|||
WoxlfError::DiscordIdParseError(e) => format!("Unable to parse player id {}", e),
|
||||
WoxlfError::GameNotInProgress => "A game is not currently in progress".to_string(),
|
||||
WoxlfError::HostWebhookError => "Unable to communicate to the host webhook".to_string(),
|
||||
WoxlfError::ImgurError(err) => format!("Imgur module error: {}", err.to_string()),
|
||||
WoxlfError::ImgurError(err) => format!("Imgur module error: {}", err),
|
||||
};
|
||||
|
||||
write!(f, "Woxlf Error: {}", msg)
|
||||
|
|
|
@ -17,7 +17,7 @@ impl From<reqwest::Error> for ImgurError {
|
|||
impl Display for ImgurError {
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
|
||||
let msg = match self {
|
||||
ImgurError::ReqwestError(err) => format!("Reqwest error: {}", err.to_string()),
|
||||
ImgurError::ReqwestError(err) => format!("Reqwest error: {}", err),
|
||||
ImgurError::ImgurRequestError(msg) => format!("Imgur request error: {}", msg),
|
||||
};
|
||||
|
||||
|
@ -56,10 +56,7 @@ pub async fn get_album_images(client_id: &str, album_hash: &str) -> Result<Vec<I
|
|||
let client = Client::new();
|
||||
|
||||
let res = client
|
||||
.get(format!(
|
||||
"https://api.imgur.com/3/album/{}",
|
||||
album_hash
|
||||
))
|
||||
.get(format!("https://api.imgur.com/3/album/{}", album_hash))
|
||||
.header("Authorization", format!("Client-ID {}", client_id))
|
||||
.send()
|
||||
.await?;
|
||||
|
|
Loading…
Reference in New Issue