use serenity from my repo. other minor improvements

This commit is contained in:
2020-10-25 11:19:21 +00:00
parent 2e9b06faf6
commit a7fa722518
5 changed files with 59 additions and 64 deletions

View File

@ -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();

View File

@ -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