Skip to content

Commit 46b6b69

Browse files
committed
bugfix: duplicate response on @mention in msg, not supressing embeds on_react
1 parent 32aa902 commit 46b6b69

File tree

2 files changed

+17
-15
lines changed

2 files changed

+17
-15
lines changed

src/handlers/event.rs

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ async fn on_message(ctx: &serenity::Context, message: &serenity::Message) -> Res
9292
return Ok(());
9393
}
9494

95-
process_message(ctx, &message, &server_config).await
95+
process_message(ctx, &message, &server_config, message.guild_id.is_some()).await
9696
}
9797

9898
async fn on_reaction_add(
@@ -143,7 +143,7 @@ async fn on_reaction_add(
143143
match server_config.sanitizer_mode {
144144
SanitizerMode::ManualEmote | SanitizerMode::ManualBoth => {
145145
debug!("Emote mode enabled, processing message");
146-
process_message(ctx, &message, &server_config).await
146+
process_message(ctx, &message, &server_config, reaction.guild_id.is_some()).await
147147
}
148148
_ => {
149149
debug!("Manual emote not enabled, exiting");
@@ -156,6 +156,7 @@ async fn process_message(
156156
ctx: &serenity::Context,
157157
message: &serenity::Message,
158158
server_config: &ServerConfig,
159+
is_guild_context: bool,
159160
) -> Result<(), Error> {
160161
debug!("process_message called:");
161162
debug!("message.id: {}", message.id);
@@ -169,11 +170,11 @@ async fn process_message(
169170
server_config.hide_original_embed
170171
);
171172

172-
let input = match server_config.sanitizer_mode {
173+
let (input, message_to_suppress) = match server_config.sanitizer_mode {
173174
SanitizerMode::ManualMention | SanitizerMode::ManualBoth => {
174175
if message.content.trim().to_lowercase().contains("http") {
175176
debug!("Using message content as input");
176-
message.content.trim() // Return message with mention + url
177+
(message.content.trim(), message) // Return message with mention + url
177178
} else if let Some(referenced_message) = &message.referenced_message {
178179
if referenced_message
179180
.content
@@ -182,7 +183,10 @@ async fn process_message(
182183
.contains("http")
183184
{
184185
debug!("Using referenced message content as input");
185-
referenced_message.content.trim()
186+
(
187+
referenced_message.content.trim(),
188+
referenced_message.as_ref(),
189+
)
186190
} else {
187191
debug!("Referenced message does not contain URL, exiting");
188192
return Ok(()); // Referenced message does not contain a url, so exit
@@ -195,7 +199,7 @@ async fn process_message(
195199

196200
_ => {
197201
debug!("Using message content as input (automatic mode)");
198-
message.content.trim()
202+
(message.content.trim(), message)
199203
}
200204
};
201205

@@ -215,15 +219,17 @@ async fn process_message(
215219
let bot_message = message.reply(ctx, response).await?;
216220
debug!("Bot replied with message ID: {}", bot_message.id);
217221

222+
let should_supress_embeds = server_config.hide_original_embed && is_guild_context;
223+
218224
debug!(
219225
"Calling handle_response_event with hide_original_embed: {}",
220226
server_config.hide_original_embed
221227
);
222228
handle_response_event(
223229
ctx,
224-
message,
230+
message_to_suppress,
225231
&bot_message,
226-
server_config.hide_original_embed,
232+
should_supress_embeds,
227233
)
228234
.await?;
229235

src/handlers/response.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ pub async fn handle_response_event(
1414
ctx: &serenity::Context,
1515
user_message: &serenity::Message,
1616
bot_message: &serenity::Message,
17-
mut supress_embed: bool,
17+
supress_embed: bool,
1818
) -> Result<()> {
1919
debug!("handle_response_event called:");
2020
debug!(" user_message.id: {}", user_message.id);
@@ -28,13 +28,9 @@ pub async fn handle_response_event(
2828
.map(|msg| check_bot_response(&msg))
2929
.unwrap_or(false);
3030

31-
debug!(" valid_response: {}", valid_response);
31+
debug!("valid_response: {}", valid_response);
3232

33-
if user_message.guild_id.is_none() {
34-
supress_embed = false;
35-
}
36-
37-
debug!(" Final supress_embed: {}", supress_embed);
33+
debug!("Final supress_embed: {}", supress_embed);
3834

3935
match (valid_response, supress_embed) {
4036
(true, true) => {

0 commit comments

Comments
 (0)