Epic: #1975
.map_err(|e| ChannelError::Other(e.to_string())) repeated 14+ times across channel implementations (telegram.rs, discord/mod.rs, slack/mod.rs, cli.rs).
Add helper method:
impl ChannelError {
pub fn other(e: impl std::fmt::Display) -> Self { Self::Other(e.to_string()) }
}
Or implement From<Box<dyn Error>> for ChannelError.
Acceptance Criteria:
Complexity: Trivial | Effort: 30m
Ref: DRY-04