diff --git a/src/channels/mod.rs b/src/channels/mod.rs index 8e927cac1..4648391f9 100644 --- a/src/channels/mod.rs +++ b/src/channels/mod.rs @@ -1814,7 +1814,17 @@ async fn process_channel_message( msg }; - let target_channel = ctx.channels_by_name.get(&msg.channel).cloned(); + let target_channel = ctx + .channels_by_name + .get(&msg.channel) + .or_else(|| { + // Multi-room channels use "name:qualifier" format (e.g. "matrix:!roomId"); + // fall back to base channel name for routing. + msg.channel + .split_once(':') + .and_then(|(base, _)| ctx.channels_by_name.get(base)) + }) + .cloned(); if let Err(err) = maybe_apply_runtime_config_update(ctx.as_ref()).await { tracing::warn!("Failed to apply runtime config update: {err}"); }