alias paging messages to not surpass 2048 characters
This commit is contained in:
parent
5ad143511e
commit
1813a00eac
@ -8,7 +8,10 @@ use serenity::{
|
|||||||
Message,
|
Message,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
framework::standard::CommandResult,
|
framework::{
|
||||||
|
Framework,
|
||||||
|
standard::CommandResult,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
@ -16,6 +19,7 @@ use regex::Regex;
|
|||||||
use chrono_tz::Tz;
|
use chrono_tz::Tz;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
|
consts::MAX_MESSAGE_LENGTH,
|
||||||
models::{
|
models::{
|
||||||
ChannelData,
|
ChannelData,
|
||||||
UserData,
|
UserData,
|
||||||
@ -24,7 +28,8 @@ use crate::{
|
|||||||
SQLPool,
|
SQLPool,
|
||||||
FrameworkCtx,
|
FrameworkCtx,
|
||||||
};
|
};
|
||||||
use serenity::framework::Framework;
|
|
||||||
|
use std::iter;
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
static ref REGEX_CHANNEL: Regex = Regex::new(r#"^\s*<#(\d+)>\s*$"#).unwrap();
|
static ref REGEX_CHANNEL: Regex = Regex::new(r#"^\s*<#(\d+)>\s*$"#).unwrap();
|
||||||
@ -265,13 +270,35 @@ SELECT name, command FROM command_aliases WHERE guild_id = (SELECT id FROM guild
|
|||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
let content = aliases.iter().map(|row| format!("**{}**: {}", row.name, row.command)).collect::<Vec<String>>().join("\n");
|
let content = iter::once("Aliases:".to_string()).chain(aliases.iter().map(|row| format!("**{}**: `{}`", row.name, row.command)));
|
||||||
|
|
||||||
let _ = msg.channel_id.say(&ctx, format!("Aliases: \n{}", content)).await;
|
let mut current_content = String::new();
|
||||||
|
|
||||||
|
for line in content {
|
||||||
|
if current_content.len() + line.len() > MAX_MESSAGE_LENGTH {
|
||||||
|
let _ = msg.channel_id.say(&ctx, ¤t_content).await;
|
||||||
|
|
||||||
|
current_content = line;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
current_content = format!("{}\n{}", current_content, line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !current_content.is_empty() {
|
||||||
|
let _ = msg.channel_id.say(&ctx, ¤t_content).await;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"remove" => {
|
"remove" => {
|
||||||
if let Some(command) = command_opt {
|
if let Some(command) = command_opt {
|
||||||
|
let deleted_count = sqlx::query!(
|
||||||
|
"
|
||||||
|
SELECT COUNT(1) AS count FROM command_aliases WHERE name = ? AND guild_id = (SELECT id FROM guilds WHERE guild = ?)
|
||||||
|
", command, guild_id)
|
||||||
|
.fetch_one(&pool)
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
sqlx::query!(
|
sqlx::query!(
|
||||||
"
|
"
|
||||||
DELETE FROM command_aliases WHERE name = ? AND guild_id = (SELECT id FROM guilds WHERE guild = ?)
|
DELETE FROM command_aliases WHERE name = ? AND guild_id = (SELECT id FROM guilds WHERE guild = ?)
|
||||||
@ -280,7 +307,9 @@ DELETE FROM command_aliases WHERE name = ? AND guild_id = (SELECT id FROM guilds
|
|||||||
.await
|
.await
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
let _ = msg.channel_id.say(&ctx, user_data.response(&pool, "alias/removed").await).await;
|
let content = user_data.response(&pool, "alias/removed").await.replace("{count}", &deleted_count.count.to_string());
|
||||||
|
|
||||||
|
let _ = msg.channel_id.say(&ctx, content).await;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
let _ = msg.channel_id.say(&ctx, user_data.response(&pool, "alias/help").await).await;
|
let _ = msg.channel_id.say(&ctx, user_data.response(&pool, "alias/help").await).await;
|
||||||
@ -306,7 +335,9 @@ UPDATE command_aliases SET command = ? WHERE guild_id = (SELECT id FROM guilds W
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
let _ = msg.channel_id.say(&ctx, user_data.response(&pool, "alias/created").await).await;
|
let content = user_data.response(&pool, "alias/created").await.replace("{name}", name);
|
||||||
|
|
||||||
|
let _ = msg.channel_id.say(&ctx, content).await;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
match sqlx::query!(
|
match sqlx::query!(
|
||||||
@ -327,7 +358,9 @@ SELECT command FROM command_aliases WHERE guild_id = (SELECT id FROM guilds WHER
|
|||||||
},
|
},
|
||||||
|
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
let _ = msg.channel_id.say(&ctx, user_data.response(&pool, "alias/not_found").await).await;
|
let content = user_data.response(&pool, "alias/not_found").await.replace("{name}", name);
|
||||||
|
|
||||||
|
let _ = msg.channel_id.say(&ctx, content).await;
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1 +1,2 @@
|
|||||||
pub const PREFIX: &str = "$";
|
pub const PREFIX: &str = "$";
|
||||||
|
pub const MAX_MESSAGE_LENGTH: usize = 2048;
|
||||||
|
Loading…
Reference in New Issue
Block a user