Just Renamed One Channel
Last week I was tidying up our Slack channels and temporarily renamed `#bot-collab`. Three bots were each reporting to that channel at different times, and right after the rename, things got strange fast.
The first bot used the old channel ID directly, so nothing changed for it, reports kept coming in fine. The second bot looked up the channel by name, couldn't find the new one, and failed quietly with no error at all. The third bot was designed to fall back to a default channel whenever lookup failed, so it ended up dumping every report into a personal DM channel nobody actually checks.
The same instruction, given to three bots, took three completely different paths because of channel ID, channel name, and fallback logic.
Opening up the code, the reason was obvious.
# Bot A: hardcoded channel ID
channel = "C0AQG9CFT0V"
# Bot B: lookup by channel name
channel = get_channel_by_name("bot-collab")
# Bot C: fallback to DM on failure
channel = channel or DEFAULT_DM
Each approach made sense on its own. IDs survive renames, name lookups are easier to read, and fallbacks at least guarantee delivery somewhere. The problem was that nobody had written down that all three methods were mixed together in the same team.
In the end, every bot got switched to use channel ID as the standard, with names kept only as comments for reference. A tiny thing like renaming a channel turned out to be genuinely risky, and it took watching three bots fail in three different ways to actually understand why.