- discord_oauth: POST /discord/oauth/start and GET /options take an optional system_id. The system must be the org's own or shared (another org's or unknown = 404). Its preferred bot is strict: one that can't connect is a 404, never a quiet swap to Automatic. No preference = the usual order. The picker's "bot for a system" now always sends system_id. - #257: _channel_state gives a bot whose token Discord rejected its own "invalid" state; the picker shows "Radio bot needs replacing" with no invite links, instead of "No radio bot". - #256: Start no longer stays disabled on "Needs fix". It re-checks with Discord first (refresh=1) and starts only if the fresh answer allows it. "Not a voice channel" still disables Start. - #258: own tooltip for "Not a voice channel"; "platform admin" -> "DRB support"; PreferredBotsCard says plainly that adding your own bot isn't self-serve (no support address exists yet, see #47), and a load failure gets a plain message + Try again instead of the raw C2 error. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
13a3525e4c
commit
32d223e556
@@ -29,6 +29,11 @@ const BADGE: Record<ChannelVerdict["kind"], { label: string; cls: string; title?
|
||||
title: "A bot could stream here, but each one that can is already in another channel of this server or on another node.",
|
||||
},
|
||||
no_bot: { label: "No radio bot", cls: "border-sev-moderate/50 text-sev-moderate", title: "No radio bot is in this Discord server yet." },
|
||||
invalid: {
|
||||
label: "Radio bot needs replacing",
|
||||
cls: "border-sev-major/50 text-sev-major",
|
||||
title: "A radio bot is in this server, but Discord rejected its token. Inviting it again won't help — DRB support has to replace it.",
|
||||
},
|
||||
unknown: { label: "Couldn't check", cls: "border-line text-ink-muted", title: "Discord didn't answer the check — DRB will still try." },
|
||||
};
|
||||
|
||||
@@ -59,11 +64,19 @@ export function VerdictBadge({ verdict, loading }: { verdict: ChannelVerdict | n
|
||||
);
|
||||
}
|
||||
|
||||
/** The sentence under a "Needs fix" / "Not a voice channel" channel. */
|
||||
/** The sentence under a "Needs fix" / "Not a voice channel" / "Radio bot needs replacing" channel. */
|
||||
export function FixText({ verdict, channelName }: { verdict: ChannelVerdict; channelName: string | null }) {
|
||||
if (verdict.kind === "not_voice") {
|
||||
return <span className="block text-xs text-sev-major mt-1">That is not a voice channel. Radio can only play in a voice channel.</span>;
|
||||
}
|
||||
if (verdict.kind === "invalid") {
|
||||
return (
|
||||
<span className="block text-xs text-sev-major mt-1">
|
||||
Discord rejected the radio bot in this server, so it can't play radio. Inviting it again won't help —
|
||||
DRB support has to replace it.
|
||||
</span>
|
||||
);
|
||||
}
|
||||
if (verdict.kind !== "fix") return null;
|
||||
return (
|
||||
<span className="block text-xs text-sev-major mt-1">
|
||||
|
||||
Reference in New Issue
Block a user