added better formatting to del and look outputs. removed a now useless model
This commit is contained in:
parent
8d5ce121d3
commit
d3f28ce539
@ -27,14 +27,13 @@ use crate::{
|
|||||||
ChannelData,
|
ChannelData,
|
||||||
GuildData,
|
GuildData,
|
||||||
UserData,
|
UserData,
|
||||||
Reminder,
|
|
||||||
Timer,
|
Timer,
|
||||||
},
|
},
|
||||||
SQLPool,
|
SQLPool,
|
||||||
time_parser::TimeParser,
|
time_parser::TimeParser,
|
||||||
framework::SendIterator,
|
framework::SendIterator,
|
||||||
check_subscription_on_message,
|
check_subscription_on_message,
|
||||||
shorthand_displacement,
|
shorthand_displacement, longhand_displacement
|
||||||
};
|
};
|
||||||
|
|
||||||
use chrono::{NaiveDateTime, offset::TimeZone};
|
use chrono::{NaiveDateTime, offset::TimeZone};
|
||||||
@ -276,18 +275,13 @@ impl LookFlags {
|
|||||||
|
|
||||||
new_flags
|
new_flags
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn display_time(&self, timestamp: u64) -> String {
|
struct LookReminder {
|
||||||
match self.time_display {
|
id: u32,
|
||||||
TimeDisplayType::Absolute => {
|
time: u32,
|
||||||
timestamp.to_string()
|
content: String,
|
||||||
},
|
channel: u64,
|
||||||
|
|
||||||
TimeDisplayType::Relative => {
|
|
||||||
timestamp.to_string()
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[command]
|
#[command]
|
||||||
@ -305,16 +299,20 @@ async fn look(ctx: &Context, msg: &Message, args: String) -> CommandResult {
|
|||||||
let reminders = if let Some(guild_id) = msg.guild_id.map(|f| f.as_u64().to_owned()) {
|
let reminders = if let Some(guild_id) = msg.guild_id.map(|f| f.as_u64().to_owned()) {
|
||||||
let channel_id = flags.channel_id.unwrap_or_else(|| msg.channel_id.as_u64().to_owned());
|
let channel_id = flags.channel_id.unwrap_or_else(|| msg.channel_id.as_u64().to_owned());
|
||||||
|
|
||||||
sqlx::query_as!(Reminder,
|
sqlx::query_as!(LookReminder,
|
||||||
"
|
"
|
||||||
SELECT
|
SELECT
|
||||||
reminders.id, reminders.time, reminders.name, reminders.channel_id
|
reminders.id, reminders.time, channels.channel, messages.content
|
||||||
FROM
|
FROM
|
||||||
reminders
|
reminders
|
||||||
INNER JOIN
|
INNER JOIN
|
||||||
channels
|
channels
|
||||||
ON
|
ON
|
||||||
reminders.channel_id = channels.id
|
reminders.channel_id = channels.id
|
||||||
|
INNER JOIN
|
||||||
|
messages
|
||||||
|
ON
|
||||||
|
messages.id = reminders.message_id
|
||||||
WHERE
|
WHERE
|
||||||
channels.guild_id = (SELECT id FROM guilds WHERE guild = ?) AND
|
channels.guild_id = (SELECT id FROM guilds WHERE guild = ?) AND
|
||||||
channels.channel = ? AND
|
channels.channel = ? AND
|
||||||
@ -326,14 +324,22 @@ LIMIT
|
|||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
sqlx::query_as!(Reminder,
|
sqlx::query_as!(LookReminder,
|
||||||
"
|
"
|
||||||
SELECT
|
SELECT
|
||||||
id, time, name, channel_id
|
reminders.id, reminders.time, messages.content, channels.channel
|
||||||
FROM
|
FROM
|
||||||
reminders
|
reminders
|
||||||
|
INNER JOIN
|
||||||
|
channels
|
||||||
|
ON
|
||||||
|
channels.id = reminders.channel_id
|
||||||
|
INNER JOIN
|
||||||
|
messages
|
||||||
|
ON
|
||||||
|
messages.id = reminders.message_id
|
||||||
WHERE
|
WHERE
|
||||||
reminders.channel_id = (SELECT id FROM channels WHERE channel = ?) AND
|
channels.channel = ? AND
|
||||||
FIND_IN_SET(reminders.enabled, ?)
|
FIND_IN_SET(reminders.enabled, ?)
|
||||||
LIMIT
|
LIMIT
|
||||||
?
|
?
|
||||||
@ -350,7 +356,18 @@ LIMIT
|
|||||||
|
|
||||||
let display = reminders
|
let display = reminders
|
||||||
.iter()
|
.iter()
|
||||||
.map(|reminder| format!("'{}' *{}* **{}**", reminder.name, &inter, flags.display_time(reminder.time as u64)));
|
.map(|reminder| {
|
||||||
|
let time_display = match flags.time_display {
|
||||||
|
TimeDisplayType::Absolute => {
|
||||||
|
user_data.timezone().timestamp(reminder.time as i64, 0).format("%Y-%m-%D %H:%M:%S").to_string()
|
||||||
|
},
|
||||||
|
TimeDisplayType::Relative => {
|
||||||
|
longhand_displacement(reminder.time as u64)
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
format!("'{}' *{}* **{}**", reminder.content, &inter, time_display)
|
||||||
|
});
|
||||||
|
|
||||||
let _ = msg.channel_id.say_lines(&ctx, display).await;
|
let _ = msg.channel_id.say_lines(&ctx, display).await;
|
||||||
}
|
}
|
||||||
@ -369,16 +386,20 @@ async fn delete(ctx: &Context, msg: &Message, _args: String) -> CommandResult {
|
|||||||
let _ = msg.channel_id.say(&ctx, user_data.response(&pool, "del/listing").await).await;
|
let _ = msg.channel_id.say(&ctx, user_data.response(&pool, "del/listing").await).await;
|
||||||
|
|
||||||
let reminders = if let Some(guild_id) = msg.guild_id.map(|f| f.as_u64().to_owned()) {
|
let reminders = if let Some(guild_id) = msg.guild_id.map(|f| f.as_u64().to_owned()) {
|
||||||
sqlx::query_as!(Reminder,
|
sqlx::query_as!(LookReminder,
|
||||||
"
|
"
|
||||||
SELECT
|
SELECT
|
||||||
reminders.id, reminders.time, reminders.name, reminders.channel_id
|
reminders.id, reminders.time, messages.content, channels.channel
|
||||||
FROM
|
FROM
|
||||||
reminders
|
reminders
|
||||||
INNER JOIN
|
INNER JOIN
|
||||||
channels
|
channels
|
||||||
ON
|
ON
|
||||||
reminders.channel_id = channels.id
|
reminders.channel_id = channels.id
|
||||||
|
INNER JOIN
|
||||||
|
messages
|
||||||
|
ON
|
||||||
|
reminders.message_id = messages.id
|
||||||
WHERE
|
WHERE
|
||||||
channels.guild_id = (SELECT id FROM guilds WHERE guild = ?)
|
channels.guild_id = (SELECT id FROM guilds WHERE guild = ?)
|
||||||
", guild_id)
|
", guild_id)
|
||||||
@ -386,14 +407,22 @@ WHERE
|
|||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
sqlx::query_as!(Reminder,
|
sqlx::query_as!(LookReminder,
|
||||||
"
|
"
|
||||||
SELECT
|
SELECT
|
||||||
id, time, name, channel_id
|
reminders.id, reminders.time, messages.content, channels.channel
|
||||||
FROM
|
FROM
|
||||||
reminders
|
reminders
|
||||||
|
INNER JOIN
|
||||||
|
messages
|
||||||
|
ON
|
||||||
|
reminders.message_id = messages.id
|
||||||
|
INNER JOIN
|
||||||
|
channels
|
||||||
|
ON
|
||||||
|
channels.id = reminders.channel_id
|
||||||
WHERE
|
WHERE
|
||||||
channel_id = (SELECT id FROM channels WHERE channel = ?)
|
channels.channel = ?
|
||||||
", msg.channel_id.as_u64())
|
", msg.channel_id.as_u64())
|
||||||
.fetch_all(&pool)
|
.fetch_all(&pool)
|
||||||
.await
|
.await
|
||||||
@ -409,7 +438,7 @@ WHERE
|
|||||||
let time = user_data.timezone().timestamp(reminder.time as i64, 0);
|
let time = user_data.timezone().timestamp(reminder.time as i64, 0);
|
||||||
|
|
||||||
// todo show reminder message instead of name
|
// todo show reminder message instead of name
|
||||||
format!("**{}**: '{}' *{}* at {}", count + 1, reminder.name, reminder.channel_id, time.format("%Y-%m-%D %H:%M:%S"))
|
format!("**{}**: '{}' *<#{}>* at {}", count + 1, reminder.content, reminder.channel, time.format("%Y-%m-%D %H:%M:%S"))
|
||||||
});
|
});
|
||||||
|
|
||||||
let _ = msg.channel_id.say_lines(&ctx, enumerated_reminders).await;
|
let _ = msg.channel_id.say_lines(&ctx, enumerated_reminders).await;
|
||||||
|
@ -229,13 +229,6 @@ SELECT value FROM strings WHERE (language = ? OR language = 'EN') AND name = ? O
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Reminder {
|
|
||||||
pub id: u32,
|
|
||||||
pub name: String,
|
|
||||||
pub time: u32,
|
|
||||||
pub channel_id: u32,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct Timer {
|
pub struct Timer {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub start_time: NaiveDateTime,
|
pub start_time: NaiveDateTime,
|
||||||
|
Loading…
Reference in New Issue
Block a user