This commit is contained in:
jude
2024-02-09 17:03:04 +00:00
parent def43bfa78
commit fa7ec8731b
4 changed files with 46 additions and 48 deletions

View File

@ -1,3 +1,4 @@
use log::warn;
use poise::{serenity_prelude::model::channel::Channel, CreateReply};
use crate::{consts::MACRO_MAX_COMMANDS, models::command_macro::RecordedCommand, Context, Error};
@ -6,8 +7,11 @@ async fn macro_check(ctx: Context<'_>) -> bool {
if let Context::Application(app_ctx) = ctx {
if let Some(guild_id) = ctx.guild_id() {
if ctx.command().identifying_name != "finish_macro" {
if ctx.command().identifying_name != "remind" {
let _ = ctx
let mut lock = ctx.data().recording_macros.write().await;
if let Some(command_macro) = lock.get_mut(&(guild_id, ctx.author().id)) {
if ctx.command().identifying_name != "remind" {
let _ = ctx
.send(
CreateReply::default()
.ephemeral(true)
@ -15,12 +19,9 @@ async fn macro_check(ctx: Context<'_>) -> bool {
)
.await;
return false;
}
return false;
}
let mut lock = ctx.data().recording_macros.write().await;
if let Some(command_macro) = lock.get_mut(&(guild_id, ctx.author().id)) {
if command_macro.commands.len() >= MACRO_MAX_COMMANDS {
let _ = ctx
.send(
@ -52,52 +53,48 @@ async fn macro_check(ctx: Context<'_>) -> bool {
}
async fn check_self_permissions(ctx: Context<'_>) -> bool {
if let Some(guild_id) = ctx.guild_id() {
let user_id = ctx.serenity_context().cache.current_user().id;
let user_id = ctx.serenity_context().cache.current_user().id;
let manage_webhooks = guild_id
.current_user_member(&ctx)
.await
.map_or(false, |m| m.permissions(&ctx).map_or(false, |p| p.manage_webhooks()));
let (view_channel, send_messages, embed_links, manage_webhooks) = ctx
.channel_id()
.to_channel(&ctx)
.await
.ok()
.and_then(|c| {
if let Channel::Guild(channel) = c {
let perms = channel.permissions_for_user(&ctx, user_id).ok()?;
let (view_channel, send_messages, embed_links) = ctx
.channel_id()
.to_channel(&ctx)
.await
.ok()
.and_then(|c| {
if let Channel::Guild(channel) = c {
let perms = channel.permissions_for_user(&ctx, user_id).ok()?;
Some((
perms.view_channel(),
perms.send_messages(),
perms.embed_links(),
perms.manage_webhooks(),
))
} else {
None
}
})
.unwrap_or((false, false, false, false));
Some((perms.view_channel(), perms.send_messages(), perms.embed_links()))
} else {
None
}
})
.unwrap_or((false, false, false));
if manage_webhooks && send_messages && embed_links {
true
} else {
let _ = ctx
.send(CreateReply::default().content(format!(
"Please ensure the bot has the correct permissions:
if view_channel && manage_webhooks && send_messages && embed_links {
true
} else {
let _ = ctx
.send(CreateReply::default().content(format!(
"Please ensure the bot has the correct permissions:
{} **View Channel**
{} **Send Message**
{} **Embed Links**
{} **Manage Webhooks**",
if view_channel { "" } else { "" },
if send_messages { "" } else { "" },
if embed_links { "" } else { "" },
if manage_webhooks { "" } else { "" },
)))
.await;
if view_channel { "" } else { "" },
if send_messages { "" } else { "" },
if embed_links { "" } else { "" },
if manage_webhooks { "" } else { "" },
)))
.await;
false
}
} else {
true
false
}
}