use serenity from my repo. other minor improvements
This commit is contained in:
@ -22,7 +22,6 @@ use std::{collections::HashMap, fmt};
|
||||
|
||||
use crate::models::{GuildData, UserData};
|
||||
use crate::{models::ChannelData, SQLPool};
|
||||
use serenity::futures::TryFutureExt;
|
||||
|
||||
type CommandFn =
|
||||
for<'fut> fn(&'fut Context, &'fut Message, String) -> BoxFuture<'fut, CommandResult>;
|
||||
@ -47,34 +46,15 @@ impl Command {
|
||||
if self.required_perms == PermissionLevel::Unrestricted {
|
||||
true
|
||||
} else {
|
||||
if member
|
||||
.permissions(&ctx)
|
||||
.map_ok_or_else(
|
||||
|_| false,
|
||||
|perms| {
|
||||
perms.manage_guild()
|
||||
|| (self.required_perms == PermissionLevel::Managed
|
||||
&& perms.manage_messages())
|
||||
},
|
||||
)
|
||||
.await
|
||||
let permissions = guild.member_permissions(&ctx, &member.user).await.unwrap();
|
||||
|
||||
if permissions.manage_guild()
|
||||
|| (permissions.manage_messages()
|
||||
&& self.required_perms == PermissionLevel::Managed)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
for role_id in &member.roles {
|
||||
let role = role_id.to_role_cached(&ctx).await;
|
||||
|
||||
if let Some(cached_role) = role {
|
||||
if cached_role.permissions.manage_guild()
|
||||
|| (self.required_perms == PermissionLevel::Managed
|
||||
&& cached_role.permissions.manage_messages())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if self.required_perms == PermissionLevel::Managed {
|
||||
let pool = ctx
|
||||
.data
|
||||
@ -320,10 +300,10 @@ impl Framework for RegexFramework {
|
||||
ctx: &Context,
|
||||
guild: &Guild,
|
||||
channel: &GuildChannel,
|
||||
) -> Result<PermissionCheck, Box<dyn std::error::Error + Sync + Send>> {
|
||||
) -> SerenityResult<PermissionCheck> {
|
||||
let user_id = ctx.cache.current_user_id().await;
|
||||
|
||||
let guild_perms = guild.member_permissions(user_id);
|
||||
let guild_perms = guild.member_permissions(&ctx, user_id).await?;
|
||||
let perms = channel.permissions_for_user(ctx, user_id).await?;
|
||||
|
||||
let basic_perms = perms.send_messages();
|
||||
|
@ -16,7 +16,7 @@ use serenity::{
|
||||
model::{
|
||||
channel::GuildChannel,
|
||||
channel::Message,
|
||||
guild::{Guild, PartialGuild},
|
||||
guild::{Guild, GuildUnavailable},
|
||||
id::{GuildId, UserId},
|
||||
},
|
||||
prelude::{Context, EventHandler, TypeMapKey},
|
||||
@ -131,7 +131,7 @@ DELETE FROM channels WHERE channel = ?
|
||||
}
|
||||
}
|
||||
|
||||
async fn guild_delete(&self, ctx: Context, guild: PartialGuild, _guild: Option<Guild>) {
|
||||
async fn guild_delete(&self, ctx: Context, guild: GuildUnavailable, _guild: Option<Guild>) {
|
||||
let pool = ctx
|
||||
.data
|
||||
.read()
|
||||
@ -214,7 +214,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
||||
|
||||
let framework_arc = Arc::new(Box::new(framework) as Box<dyn Framework + Send + Sync>);
|
||||
|
||||
let mut client = Client::new(&token)
|
||||
let mut client = Client::builder(&token)
|
||||
.intents(
|
||||
GatewayIntents::GUILD_MESSAGES
|
||||
| GatewayIntents::GUILDS
|
||||
|
Reference in New Issue
Block a user