Skip to content

Commit 32ac30c

Browse files
committed
feat(commands): add reminder text command
1 parent 56e3c68 commit 32ac30c

25 files changed

Lines changed: 560 additions & 8 deletions

.sqlx/query-1f2332afc3824ca0790ef097ff1d48074feaa48de9844e0e30d7e6fe96ad5e44.json

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.sqlx/query-8d256f5308e9c3af3f409d5097302f9794287b06f89da6c7f4a86efcd37b151a.json

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.sqlx/query-b9420d5d850bf8fc05beb8594611533139e47e3df927153e8cb15fe7451fdc4b.json

Lines changed: 62 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.lock

Lines changed: 39 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ toml = "0.9.7"
1313
reqwest = "0.12.23"
1414
async-trait = "0.1.89"
1515
chrono = { version = "0.4.42", features = ["serde"] }
16+
regex = "1.11.3"
1617

1718
[dependencies.uuid]
1819
version = "1.18.1"
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
-- Create reminders table
2+
3+
CREATE TABLE IF NOT EXISTS reminders (
4+
id INTEGER PRIMARY KEY AUTOINCREMENT,
5+
thread_id TEXT NOT NULL,
6+
user_id BIGINT NOT NULL,
7+
channel_id BIGINT NOT NULL,
8+
guild_id BIGINT NOT NULL,
9+
reminder_content TEXT NOT NULL,
10+
trigger_time INTEGER NOT NULL,
11+
created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')),
12+
completed BOOLEAN NOT NULL DEFAULT 0,
13+
FOREIGN KEY (thread_id) REFERENCES threads(id) ON DELETE CASCADE ON UPDATE CASCADE
14+
);
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
use crate::config::Config;
2+
use crate::utils::conversion::hex_string_to_int::hex_string_to_int;
3+
use crate::utils::message::message_builder::MessageBuilder;
4+
use serenity::all::{Context, Message};
5+
use std::collections::HashMap;
6+
7+
pub async fn send_register_confirmation(
8+
reminder_content: &str,
9+
ctx: &Context,
10+
msg: &Message,
11+
config: &Config,
12+
trigger_timestamp: i64,
13+
) {
14+
let mut params = HashMap::new();
15+
params.insert("time".to_string(), format!("<t:{}:F>", trigger_timestamp));
16+
params.insert(
17+
"remaining_time".to_string(),
18+
format!("<t:{}:R>", trigger_timestamp),
19+
);
20+
21+
if !reminder_content.is_empty() {
22+
params.insert("content".to_string(), reminder_content.to_string());
23+
}
24+
25+
if !reminder_content.is_empty() {
26+
let _ = MessageBuilder::system_message(&ctx, &config)
27+
.translated_content(
28+
"reminder.registered_with_content",
29+
Some(&params),
30+
None,
31+
None,
32+
)
33+
.await
34+
.to_channel(msg.channel_id)
35+
.send()
36+
.await;
37+
} else {
38+
let _ = MessageBuilder::system_message(&ctx, &config)
39+
.translated_content(
40+
"reminder.registered_without_content",
41+
Some(&params),
42+
None,
43+
None,
44+
)
45+
.await
46+
.to_channel(msg.channel_id)
47+
.send()
48+
.await;
49+
}
50+
}
51+
52+
pub async fn send_reminder_content(
53+
reminder_content: &str,
54+
ctx: &Context,
55+
msg: &Message,
56+
config: &Config,
57+
trigger_timestamp: i64,
58+
) {
59+
let mut params = HashMap::new();
60+
params.insert("time".to_string(), format!("<t:{}:F>", trigger_timestamp));
61+
params.insert(
62+
"remaining_time".to_string(),
63+
format!("<t:{}:R>", trigger_timestamp),
64+
);
65+
66+
if !reminder_content.is_empty() {
67+
params.insert("content".to_string(), reminder_content.to_string());
68+
}
69+
70+
if !reminder_content.is_empty() {
71+
let _ = MessageBuilder::system_message(&ctx, &config)
72+
.translated_content("reminder.show_with_content", Some(&params), None, None)
73+
.await
74+
.to_channel(msg.channel_id)
75+
.color(hex_string_to_int(&config.reminders.embed_color) as u32)
76+
.send()
77+
.await;
78+
} else {
79+
let _ = MessageBuilder::system_message(&ctx, &config)
80+
.translated_content("reminder.show_without_content", None, None, None)
81+
.await
82+
.to_channel(msg.channel_id)
83+
.color(hex_string_to_int(&config.reminders.embed_color) as u32)
84+
.send()
85+
.await;
86+
}
87+
}

src/commands/add_reminder/mod.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
pub mod common;
2+
pub mod slash_command;
3+
pub mod text_command;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pub mod add_reminder;

0 commit comments

Comments
 (0)