diff --git a/src/channels/plugins/onboarding/slack.ts b/src/channels/plugins/onboarding/slack.ts index daacc66fe..f1aa29b7c 100644 --- a/src/channels/plugins/onboarding/slack.ts +++ b/src/channels/plugins/onboarding/slack.ts @@ -124,6 +124,25 @@ async function noteSlackTokenHelp(prompter: WizardPrompter, botName: string): Pr ); } +async function promptSlackTokens(prompter: WizardPrompter): Promise<{ + botToken: string; + appToken: string; +}> { + const botToken = String( + await prompter.text({ + message: "Enter Slack bot token (xoxb-...)", + validate: (value) => (value?.trim() ? undefined : "Required"), + }), + ).trim(); + const appToken = String( + await prompter.text({ + message: "Enter Slack app token (xapp-...)", + validate: (value) => (value?.trim() ? undefined : "Required"), + }), + ).trim(); + return { botToken, appToken }; +} + function patchSlackConfigForAccount( cfg: OpenClawConfig, accountId: string, @@ -370,18 +389,7 @@ export const slackOnboardingAdapter: ChannelOnboardingAdapter = { }, }; } else { - botToken = String( - await prompter.text({ - message: "Enter Slack bot token (xoxb-...)", - validate: (value) => (value?.trim() ? undefined : "Required"), - }), - ).trim(); - appToken = String( - await prompter.text({ - message: "Enter Slack app token (xapp-...)", - validate: (value) => (value?.trim() ? undefined : "Required"), - }), - ).trim(); + ({ botToken, appToken } = await promptSlackTokens(prompter)); } } else if (hasConfigTokens) { const keep = await prompter.confirm({ @@ -389,32 +397,10 @@ export const slackOnboardingAdapter: ChannelOnboardingAdapter = { initialValue: true, }); if (!keep) { - botToken = String( - await prompter.text({ - message: "Enter Slack bot token (xoxb-...)", - validate: (value) => (value?.trim() ? undefined : "Required"), - }), - ).trim(); - appToken = String( - await prompter.text({ - message: "Enter Slack app token (xapp-...)", - validate: (value) => (value?.trim() ? undefined : "Required"), - }), - ).trim(); + ({ botToken, appToken } = await promptSlackTokens(prompter)); } } else { - botToken = String( - await prompter.text({ - message: "Enter Slack bot token (xoxb-...)", - validate: (value) => (value?.trim() ? undefined : "Required"), - }), - ).trim(); - appToken = String( - await prompter.text({ - message: "Enter Slack app token (xapp-...)", - validate: (value) => (value?.trim() ? undefined : "Required"), - }), - ).trim(); + ({ botToken, appToken } = await promptSlackTokens(prompter)); } if (botToken && appToken) {