added cargo feature to cache guild prefixes. dont query language until necessary in framework

This commit is contained in:
2021-03-24 13:10:57 +00:00
parent 1473ac3bcf
commit c76a456af5
9 changed files with 173 additions and 50 deletions

View File

@@ -335,15 +335,7 @@ impl Framework for RegexFramework {
async fn check_prefix(ctx: &Context, guild: &Guild, prefix_opt: Option<Match<'_>>) -> bool {
if let Some(prefix) = prefix_opt {
let pool = ctx
.data
.read()
.await
.get::<SQLPool>()
.cloned()
.expect("Could not get SQLPool from data");
let guild_prefix = GuildData::prefix_from_id(Some(guild.id), &pool).await;
let guild_prefix = GuildData::prefix_from_id(Some(guild.id), &ctx).await;
guild_prefix.as_str() == prefix.as_str()
} else {
@@ -369,7 +361,7 @@ impl Framework for RegexFramework {
if check_prefix(&ctx, &guild, full_match.name("prefix")).await {
let lm = data.get::<LanguageManager>().unwrap();
let language = UserData::language_of(&msg.author, &pool).await;
let language = UserData::language_of(&msg.author, &pool);
match check_self_permissions(&ctx, &guild, &channel).await {
Ok(perms) => match perms {
@@ -414,18 +406,25 @@ impl Framework for RegexFramework {
{
let _ = msg
.channel_id
.say(&ctx, lm.get(&language, "no_perms_restricted"))
.say(
&ctx,
lm.get(&language.await, "no_perms_restricted"),
)
.await;
} else if command.required_perms == PermissionLevel::Managed {
let _ = msg
.channel_id
.say(
&ctx,
lm.get(&language, "no_perms_managed").replace(
"{prefix}",
&GuildData::prefix_from_id(msg.guild_id, &pool)
lm.get(&language.await, "no_perms_managed")
.replace(
"{prefix}",
&GuildData::prefix_from_id(
msg.guild_id,
&ctx,
)
.await,
),
),
)
.await;
}
@@ -439,7 +438,7 @@ impl Framework for RegexFramework {
manage_messages,
) => {
let response = lm
.get(&language, "no_perms_general")
.get(&language.await, "no_perms_general")
.replace(
"{manage_webhooks}",
if manage_webhooks { "" } else { "" },