Telegram-user: prompt login during onboarding
This commit is contained in:
parent
055c4f17a5
commit
1a77217ba6
@ -16,6 +16,8 @@ import {
|
|||||||
resolveDefaultTelegramUserAccountId,
|
resolveDefaultTelegramUserAccountId,
|
||||||
resolveTelegramUserAccount,
|
resolveTelegramUserAccount,
|
||||||
} from "./accounts.js";
|
} from "./accounts.js";
|
||||||
|
import { loginTelegramUser } from "./login.js";
|
||||||
|
import { resolveTelegramUserSessionPath } from "./session.js";
|
||||||
import type { CoreConfig } from "./types.js";
|
import type { CoreConfig } from "./types.js";
|
||||||
|
|
||||||
const channel = "telegram-user" as const;
|
const channel = "telegram-user" as const;
|
||||||
@ -182,7 +184,14 @@ export const telegramUserOnboardingAdapter: ChannelOnboardingAdapter = {
|
|||||||
selectionHint: configured ? "configured" : "needs credentials",
|
selectionHint: configured ? "configured" : "needs credentials",
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
configure: async ({ cfg, prompter, accountOverrides, shouldPromptAccountIds, forceAllowFrom }) => {
|
configure: async ({
|
||||||
|
cfg,
|
||||||
|
runtime,
|
||||||
|
prompter,
|
||||||
|
accountOverrides,
|
||||||
|
shouldPromptAccountIds,
|
||||||
|
forceAllowFrom,
|
||||||
|
}) => {
|
||||||
const override = accountOverrides["telegram-user"]?.trim();
|
const override = accountOverrides["telegram-user"]?.trim();
|
||||||
const defaultAccountId = resolveDefaultTelegramUserAccountId(cfg as CoreConfig);
|
const defaultAccountId = resolveDefaultTelegramUserAccountId(cfg as CoreConfig);
|
||||||
let accountId = override ? normalizeAccountId(override) : defaultAccountId;
|
let accountId = override ? normalizeAccountId(override) : defaultAccountId;
|
||||||
@ -310,13 +319,45 @@ export const telegramUserOnboardingAdapter: ChannelOnboardingAdapter = {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
await prompter.note(
|
const wantsLogin = await prompter.confirm({
|
||||||
[
|
message: "Link Telegram user now (QR or phone code)?",
|
||||||
"Next: link the account via QR or phone code.",
|
initialValue: !configured,
|
||||||
"Run: clawdbot channels login --channel telegram-user",
|
});
|
||||||
].join("\n"),
|
if (wantsLogin) {
|
||||||
"Telegram user login",
|
const refreshed = resolveTelegramUserAccount({
|
||||||
);
|
cfg: next,
|
||||||
|
accountId: resolvedAccountId,
|
||||||
|
});
|
||||||
|
if (!refreshed.credentials.apiId || !refreshed.credentials.apiHash) {
|
||||||
|
await prompter.note(
|
||||||
|
"Telegram API ID/hash missing. Add credentials first, then retry login.",
|
||||||
|
"Telegram user login",
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
await loginTelegramUser({
|
||||||
|
apiId: refreshed.credentials.apiId,
|
||||||
|
apiHash: refreshed.credentials.apiHash,
|
||||||
|
storagePath: resolveTelegramUserSessionPath(resolvedAccountId),
|
||||||
|
runtime,
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
runtime.error(`Telegram user login failed: ${String(err)}`);
|
||||||
|
await prompter.note(
|
||||||
|
`Run \`clawdbot channels login --channel telegram-user\` later to link.`,
|
||||||
|
"Telegram user login",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
await prompter.note(
|
||||||
|
[
|
||||||
|
"Next: link the account via QR or phone code.",
|
||||||
|
"Run: clawdbot channels login --channel telegram-user",
|
||||||
|
].join("\n"),
|
||||||
|
"Telegram user login",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return { cfg: next, accountId: resolvedAccountId };
|
return { cfg: next, accountId: resolvedAccountId };
|
||||||
},
|
},
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user