
















@@ -1,7 +1,7 @@
11import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/account-id";
22import type { DiscordGuildEntry, OpenClawConfig } from "openclaw/plugin-sdk/config-contracts";
33import type { ChannelSetupDmPolicy, ChannelSetupWizard } from "openclaw/plugin-sdk/setup-runtime";
4-import { createStandardChannelSetupStatus } from "openclaw/plugin-sdk/setup-runtime";
4+import { createStandardChannelSetupStatus, t } from "openclaw/plugin-sdk/setup-runtime";
55import { formatDocsLink } from "openclaw/plugin-sdk/setup-tools";
66import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
77import {
@@ -20,11 +20,11 @@ import {
2020const channel = "discord" as const;
21212222const DISCORD_TOKEN_HELP_LINES = [
23-"1) Discord Developer Portal -> Applications -> New Application",
24-"2) Bot -> Add Bot -> Reset Token -> copy token",
25-"3) OAuth2 -> URL Generator -> scope 'bot' -> invite to your server",
26-"Tip: enable Message Content Intent if you need message text. (Bot -> Privileged Gateway Intents -> Message Content Intent)",
27-`Docs: ${formatDocsLink("/discord", "discord")}`,
23+t("wizard.discord.tokenHelpCreateApplication"),
24+t("wizard.discord.tokenHelpCopyToken"),
25+t("wizard.discord.tokenHelpInviteBot"),
26+t("wizard.discord.tokenHelpMessageContentIntent"),
27+t("wizard.channels.docs", { link: formatDocsLink("/discord", "discord") }),
2828];
29293030type DiscordGuildChannelAllowlistEntry = {
@@ -118,10 +118,10 @@ export function createDiscordSetupWizardBase(handlers: {
118118 channel,
119119status: createStandardChannelSetupStatus({
120120channelLabel: "Discord",
121-configuredLabel: "configured",
122-unconfiguredLabel: "needs token",
123-configuredHint: "configured",
124-unconfiguredHint: "needs token",
121+configuredLabel: t("wizard.channels.statusConfigured"),
122+unconfiguredLabel: t("wizard.channels.statusNeedsToken"),
123+configuredHint: t("wizard.channels.statusConfigured"),
124+unconfiguredHint: t("wizard.channels.statusNeedsToken"),
125125configuredScore: 2,
126126unconfiguredScore: 1,
127127resolveConfigured: ({ cfg, accountId }) =>
@@ -131,13 +131,13 @@ export function createDiscordSetupWizardBase(handlers: {
131131{
132132inputKey: "token",
133133providerHint: channel,
134-credentialLabel: "Discord bot token",
134+credentialLabel: t("wizard.discord.botToken"),
135135preferredEnvVar: "DISCORD_BOT_TOKEN",
136-helpTitle: "Discord bot token",
136+helpTitle: t("wizard.discord.botToken"),
137137helpLines: DISCORD_TOKEN_HELP_LINES,
138-envPrompt: "DISCORD_BOT_TOKEN detected. Use env var?",
139-keepPrompt: "Discord token already configured. Keep it?",
140-inputPrompt: "Enter Discord bot token",
138+envPrompt: t("wizard.discord.tokenEnvPrompt"),
139+keepPrompt: t("wizard.discord.tokenKeepPrompt"),
140+inputPrompt: t("wizard.discord.tokenInputPrompt"),
141141allowEnv: ({ accountId }: { accountId: string }) => accountId === DEFAULT_ACCOUNT_ID,
142142inspect: ({ cfg, accountId }: { cfg: OpenClawConfig; accountId: string }) => {
143143const account = inspectDiscordSetupAccount({ cfg, accountId });
@@ -155,7 +155,7 @@ export function createDiscordSetupWizardBase(handlers: {
155155],
156156groupAccess: createAccountScopedGroupAccessSection({
157157 channel,
158-label: "Discord channels",
158+label: t("wizard.discord.channelsLabel"),
159159placeholder: "My Server/#general, guildId/channelId, #support",
160160currentPolicy: ({ cfg, accountId }: { cfg: OpenClawConfig; accountId: string }) =>
161161resolveDiscordSetupAccountConfig({ cfg, accountId }).config.groupPolicy ?? "allowlist",
@@ -191,18 +191,17 @@ export function createDiscordSetupWizardBase(handlers: {
191191credentialInputKey: "token",
192192helpTitle: "Discord allowlist",
193193helpLines: [
194-"Allowlist Discord DMs by username (we resolve to user ids).",
195-"Examples:",
194+t("wizard.discord.allowlistIntro"),
195+t("wizard.discord.examples"),
196196"- 123456789012345678",
197197"- @alice",
198198"- alice#1234",
199-"Multiple entries: comma-separated.",
200-`Docs: ${formatDocsLink("/discord", "discord")}`,
199+t("wizard.discord.multipleEntries"),
200+t("wizard.channels.docs", { link: formatDocsLink("/discord", "discord") }),
201201],
202-message: "Discord allowFrom (usernames or ids)",
202+message: t("wizard.discord.allowFromPrompt"),
203203placeholder: "@alice, 123456789012345678",
204-invalidWithoutCredentialNote:
205-"Bot token missing; use numeric user ids (or mention form) only.",
204+invalidWithoutCredentialNote: t("wizard.discord.allowFromInvalidWithoutToken"),
206205parseId: parseDiscordAllowFromId,
207206resolveEntries: handlers.resolveAllowFromEntries,
208207}),
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。