624777617c
Review finding on #90154: only the wildcard ("*") branch of _iter_missed_message_backfill_candidates skipped obfuscated channels. A channel the bot previously talked in that later lost VIEW_CHANNEL still entered the explicit-id branch and produced a failing history read on every startup. Apply the predicate once, after both branches build the candidate list, and import it at module level like the other helpers. (During the rebase the predicate was also tightened, resolved in the original commit: is_discord_channel_obfuscated catches AttributeError (the precise expected failure) instead of a bare Exception so a genuine attribute bug is not hidden behind the name fallback, and its docstring states the deliberate bias of the sentinel-name fallback (a visible channel literally named ___hidden___ is also skipped on discord.py builds without the flag).)