guild data caching

This commit is contained in:
2021-04-12 22:33:02 +01:00
parent 72a976dea8
commit 0a9624d12d
9 changed files with 214 additions and 222 deletions

View File

@ -5,14 +5,11 @@ use serenity::{client::Context, model::channel::Message};
use chrono::offset::Utc;
use crate::{
command_help,
consts::DEFAULT_PREFIX,
get_ctx_data,
language_manager::LanguageManager,
models::{GuildData, UserData},
FrameworkCtx, THEME_COLOR,
command_help, consts::DEFAULT_PREFIX, get_ctx_data, language_manager::LanguageManager,
models::UserData, FrameworkCtx, THEME_COLOR,
};
use crate::models::CtxGuildData;
use serenity::builder::CreateEmbedFooter;
use std::sync::Arc;
use std::time::{SystemTime, UNIX_EPOCH};
@ -107,7 +104,7 @@ async fn help(ctx: &Context, msg: &Message, args: String) {
let (pool, lm) = get_ctx_data(&ctx).await;
let language = UserData::language_of(&msg.author, &pool);
let prefix = GuildData::prefix_from_id(msg.guild_id, &ctx);
let prefix = ctx.prefix(msg.guild_id);
if !args.is_empty() {
let framework = ctx
@ -138,7 +135,7 @@ async fn info(ctx: &Context, msg: &Message, _args: String) {
let (pool, lm) = get_ctx_data(&ctx).await;
let language = UserData::language_of(&msg.author, &pool);
let prefix = GuildData::prefix_from_id(msg.guild_id, &ctx);
let prefix = ctx.prefix(msg.guild_id);
let current_user = ctx.cache.current_user();
let footer = footer(ctx).await;

View File

@ -31,6 +31,7 @@ use crate::{
#[cfg(feature = "prefix-cache")]
use crate::PrefixCache;
use crate::models::CtxGuildData;
use std::{collections::HashMap, iter, time::Duration};
#[command]
@ -175,10 +176,9 @@ async fn timezone(ctx: &Context, msg: &Message, args: String) {
}
}
} else {
let content = lm.get(&user_data.language, "timezone/no_argument").replace(
"{prefix}",
&GuildData::prefix_from_id(msg.guild_id, &ctx).await,
);
let content = lm
.get(&user_data.language, "timezone/no_argument")
.replace("{prefix}", &ctx.prefix(msg.guild_id).await);
let popular_timezones = ctx
.data
@ -255,7 +255,7 @@ async fn change_meridian(ctx: &Context, msg: &Message, args: String) {
})
.await;
} else {
let prefix = GuildData::prefix_from_id(msg.guild_id, &ctx).await;
let prefix = ctx.prefix(msg.guild_id).await;
command_help(ctx, msg, lm, &prefix, &user_data.language, "meridian").await;
}
@ -557,7 +557,7 @@ WHERE
})
.await;
} else {
let prefix = GuildData::prefix_from_id(msg.guild_id, &ctx).await;
let prefix = ctx.prefix(msg.guild_id).await;
command_help(ctx, msg, lm, &prefix, &language, "restrict").await;
}
@ -684,7 +684,7 @@ SELECT command FROM command_aliases WHERE guild_id = (SELECT id FROM guilds WHER
}
}
} else {
let prefix = GuildData::prefix_from_id(msg.guild_id, &ctx).await;
let prefix = ctx.prefix(msg.guild_id).await;
command_help(ctx, msg, lm, &prefix, &language, "alias").await;
}

View File

@ -47,7 +47,7 @@ use std::{
time::{SystemTime, UNIX_EPOCH},
};
use crate::models::MeridianType;
use crate::models::{CtxGuildData, MeridianType};
use regex::Captures;
use serenity::model::channel::Channel;
@ -177,7 +177,7 @@ async fn offset(ctx: &Context, msg: &Message, args: String) {
let user_data = UserData::from_user(&msg.author, &ctx, &pool).await.unwrap();
if args.is_empty() {
let prefix = GuildData::prefix_from_id(msg.guild_id, &ctx).await;
let prefix = ctx.prefix(msg.guild_id).await;
command_help(ctx, msg, lm, &prefix, &user_data.language, "offset").await;
} else {
@ -815,7 +815,7 @@ DELETE FROM timers WHERE owner = ? AND name = ?
}
_ => {
let prefix = GuildData::prefix_from_id(msg.guild_id, &ctx).await;
let prefix = ctx.prefix(msg.guild_id).await;
command_help(ctx, msg, lm, &prefix, &language, "timer").await;
}
@ -851,7 +851,6 @@ enum ReminderError {
InvalidTag,
InvalidTime,
InvalidExpiration,
NeedSubscription,
DiscordError(String),
}
@ -879,7 +878,6 @@ impl ToResponse for ReminderError {
Self::InvalidTag => "remind/invalid_tag",
Self::InvalidTime => "remind/invalid_time",
Self::InvalidExpiration => "interval/invalid_expiration",
Self::NeedSubscription => "interval/donor",
Self::DiscordError(_) => "remind/generic_error",
}
}
@ -1146,7 +1144,7 @@ INSERT INTO reminders (
ctx,
msg,
lm,
&GuildData::prefix_from_id(msg.guild_id, &ctx).await,
&ctx.prefix(msg.guild_id).await,
&language,
"countdown",
)
@ -1157,10 +1155,8 @@ INSERT INTO reminders (
.channel_id
.say(
&ctx,
lm.get(&language, "interval/donor").replace(
"{prefix}",
&GuildData::prefix_from_id(msg.guild_id, &ctx).await,
),
lm.get(&language, "interval/donor")
.replace("{prefix}", &ctx.prefix(msg.guild_id).await),
)
.await;
}
@ -1229,10 +1225,8 @@ async fn remind_command(ctx: &Context, msg: &Message, args: String, command: Rem
.channel_id
.say(
&ctx,
lm.get(&language, "interval/donor").replace(
"{prefix}",
&GuildData::prefix_from_id(msg.guild_id, &ctx).await,
),
lm.get(&language, "interval/donor")
.replace("{prefix}", &ctx.prefix(msg.guild_id).await),
)
.await;
} else {
@ -1383,7 +1377,7 @@ async fn remind_command(ctx: &Context, msg: &Message, args: String, command: Rem
}
None => {
let prefix = GuildData::prefix_from_id(msg.guild_id, &ctx).await;
let prefix = ctx.prefix(msg.guild_id).await;
match command {
RemindCommand::Remind => {
@ -1608,7 +1602,7 @@ async fn natural(ctx: &Context, msg: &Message, args: String) {
ctx,
msg,
lm,
&GuildData::prefix_from_id(msg.guild_id, &ctx).await,
&ctx.prefix(msg.guild_id).await,
&user_data.language,
"natural",
)

View File

@ -12,10 +12,8 @@ use serenity::{
use std::fmt;
use crate::{
command_help, get_ctx_data,
models::{GuildData, UserData},
};
use crate::models::CtxGuildData;
use crate::{command_help, get_ctx_data, models::UserData};
use sqlx::MySqlPool;
use std::convert::TryFrom;
@ -233,7 +231,7 @@ DELETE FROM todos WHERE user_id = (SELECT id FROM users WHERE user = ?) AND guil
let (pool, lm) = get_ctx_data(&ctx).await;
let user_data = UserData::from_user(&msg.author, &ctx, &pool).await.unwrap();
let prefix = GuildData::prefix_from_id(msg.guild_id, &ctx).await;
let prefix = ctx.prefix(msg.guild_id).await;
match subcommand {
SubCommand::View => {
@ -426,7 +424,7 @@ async fn show_help(ctx: &Context, msg: &Message, target: Option<TodoTarget>) {
let (pool, lm) = get_ctx_data(&ctx).await;
let language = UserData::language_of(&msg.author, &pool);
let prefix = GuildData::prefix_from_id(msg.guild_id, &ctx);
let prefix = ctx.prefix(msg.guild_id);
let command = match target {
None => "todo",