Skip to content

Commit c2eae34

Browse files
committed
fix
1 parent 8beb881 commit c2eae34

4 files changed

Lines changed: 60 additions & 27 deletions

File tree

src/event_handler.rs

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -106,20 +106,30 @@ pub async fn handle_event(
106106
if is_dm {
107107
// Handle DM with rate limiting
108108
if let Some(dm_limit_duration) = locked_state.dm_bucket.limit_duration(msg.author.id.get()) {
109-
tracing::info!("DM rate limit reached for user {}, {} seconds remaining", msg.author.id.get(), dm_limit_duration.as_secs());
109+
tracing::info!(
110+
"DM rate limit reached for user {}, {} seconds remaining",
111+
msg.author.id.get(),
112+
dm_limit_duration.as_secs()
113+
);
110114

111115
// Send a message to the user about the rate limit
112116
let _ = http
113117
.create_message(msg.channel_id)
114-
.content(&format!("You've reached the DM rate limit. Please wait {} seconds before sending more messages.", dm_limit_duration.as_secs()))?
118+
.content(&format!(
119+
"You've reached the DM rate limit. Please wait {} seconds before sending more messages.",
120+
dm_limit_duration.as_secs()
121+
))?
115122
.reply(msg.id)
116123
.exec()
117124
.await;
118125
return Ok(());
119126
}
120127

121128
// Track message count for memory creation using the DM user ID as key
122-
let count = locked_state.channel_message_counts.entry(msg.author.id.get()).or_insert(0);
129+
let count = locked_state
130+
.channel_message_counts
131+
.entry(msg.author.id.get())
132+
.or_insert(0);
123133
*count += 1;
124134

125135
// Check if we should create memories (every 15 messages)
@@ -198,7 +208,10 @@ pub async fn handle_event(
198208
}
199209

200210
// Increment message count for this channel
201-
let count = locked_state.channel_message_counts.entry(msg.channel_id.get()).or_insert(0);
211+
let count = locked_state
212+
.channel_message_counts
213+
.entry(msg.channel_id.get())
214+
.or_insert(0);
202215
*count += 1;
203216

204217
if let Some(today_i) = locked_state.config.today_i_channel {
@@ -245,7 +258,7 @@ pub async fn handle_event(
245258
)
246259
.exec()
247260
.await?;
248-
} else {
261+
} else if text.is_some() || !embeds.is_empty() || !attachments.is_empty() {
249262
let mut req = http
250263
.create_message(msg.channel_id)
251264
.embeds(&embeds)?

src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ async fn main() -> color_eyre::Result<()> {
6363

6464
tracing_subscriber::fmt()
6565
.with_env_filter(tracing_subscriber::EnvFilter::new(
66-
"debug,h2::codec::framed_read=off,twilight_gateway::shard=off,twilight_http_ratelimiting::in_memory=info,rustls::client=info,hyper::client::connect=info",
66+
"debug,h2::codec::framed_read=off,twilight_gateway::shard=off,twilight_http_ratelimiting::in_memory=info,rustls::client=info,hyper::client::connect=info,h2::codec::framed_write=info",
6767
))
6868
.init();
6969

src/message_handler.rs

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,29 @@
1-
use rand::{prelude::{IteratorRandom, SliceRandom}, seq::IndexedRandom, Rng};
1+
use rand::{
2+
prelude::{IteratorRandom, SliceRandom},
3+
seq::IndexedRandom,
4+
Rng,
5+
};
26
use serde_rusqlite::from_row;
37
use std::{sync::Arc, time::Instant};
48
use tokio::sync::{mpsc, MutexGuard};
59
use twilight_http::Client as HttpClient;
6-
use twilight_model::{gateway::payload::incoming::MessageCreate, id::{marker::{ChannelMarker, MessageMarker}, Id}};
10+
use twilight_model::{
11+
gateway::payload::incoming::MessageCreate,
12+
id::{
13+
marker::{ChannelMarker, MessageMarker},
14+
Id,
15+
},
16+
};
717
use vesper::twilight_exports::UserMarker;
818

919
use crate::{
10-
ai_message, database::User, memory_creator, quiz_handler, structs::{Command, List, State},
11-
utils::levels::xp_required_for_level, zalgos::zalgify_text, RESPONDERS,
20+
ai_message,
21+
database::User,
22+
memory_creator, quiz_handler,
23+
structs::{Command, List, State},
24+
utils::levels::xp_required_for_level,
25+
zalgos::zalgify_text,
26+
RESPONDERS,
1227
};
1328

1429
/// Handle streaming AI response with periodic updates
@@ -59,21 +74,19 @@ pub async fn handle_streaming_response(
5974
// Send initial message once we have enough words
6075
if message_id.is_none() && content.split_whitespace().count() >= MIN_WORDS {
6176
match http.create_message(channel_id).content(&content) {
62-
Ok(req) => {
63-
match req.reply(reply_to).exec().await {
64-
Ok(response) => {
65-
if let Ok(msg) = response.model().await {
66-
message_id = Some(msg.id);
67-
last_sent_content = content.clone();
68-
last_update = Instant::now();
69-
}
70-
}
71-
Err(e) => {
72-
log::error!("Failed to send initial message: {:?}", e);
73-
return;
77+
Ok(req) => match req.reply(reply_to).exec().await {
78+
Ok(response) => {
79+
if let Ok(msg) = response.model().await {
80+
message_id = Some(msg.id);
81+
last_sent_content = content.clone();
82+
last_update = Instant::now();
7483
}
7584
}
76-
}
85+
Err(e) => {
86+
log::error!("Failed to send initial message: {:?}", e);
87+
return;
88+
}
89+
},
7790
Err(e) => {
7891
log::error!("Failed to create message: {:?}", e);
7992
return;
@@ -227,7 +240,8 @@ pub async fn handle_message(
227240
) =>
228241
{
229242
// Check if we should create memories based on message count
230-
let should_create_memory = locked_state.channel_message_counts
243+
let should_create_memory = locked_state
244+
.channel_message_counts
231245
.get(&msg.channel_id.get())
232246
.map(|count| *count >= 30)
233247
.unwrap_or(false);
@@ -374,9 +388,15 @@ pub async fn handle_message(
374388
.children
375389
.into_iter()
376390
.filter(|x| !x.data.over_18)
377-
.filter(|x| x.data.url_overridden_by_dest.contains("i."))
391+
.filter(|x| {
392+
x.data
393+
.url_overridden_by_dest
394+
.as_ref()
395+
.map(|url| url.contains("i."))
396+
.unwrap_or(false)
397+
})
378398
.choose(&mut locked_state.rng)
379-
.map(|x| x.data.url_overridden_by_dest);
399+
.and_then(|x| x.data.url_overridden_by_dest);
380400
if let Some(pic) = res {
381401
Ok(Command::text(pic))
382402
} else {

src/structs.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ pub struct Children {
191191
#[serde(rename_all = "camelCase")]
192192
pub struct Data2 {
193193
#[serde(rename = "url_overridden_by_dest")]
194-
pub url_overridden_by_dest: String,
194+
pub url_overridden_by_dest: Option<String>,
195195
#[serde(rename = "over_18")]
196196
pub over_18: bool,
197197
}

0 commit comments

Comments
 (0)