telegram: add /start /help /status bot commands

This commit is contained in:
Kenneth Lien
2026-03-20 11:47:39 -07:00
parent 90accf6fd2
commit 521f858e11

View File

@@ -507,6 +507,52 @@ mcp.setRequestHandler(CallToolRequestSchema, async req => {
await mcp.connect(new StdioServerTransport())
bot.command('start', async ctx => {
await ctx.reply(
`👋 Hi! I'm a bridge between Telegram and Claude Code.\n\n` +
`How to set up:\n` +
`1. Send me any message here\n` +
`2. I'll give you a pairing code\n` +
`3. Run that code in Claude Code to link your account\n\n` +
`Once paired, your messages here go straight to Claude.`
)
})
bot.command('help', async ctx => {
await ctx.reply(
`I relay messages between Telegram and Claude Code.\n\n` +
`What works:\n` +
`- Text messages\n` +
`- Photos (with captions)\n` +
`- Replies to specific messages\n\n` +
`Use /start for setup instructions.`
)
})
bot.command('status', async ctx => {
const from = ctx.from
if (!from) return
const senderId = String(from.id)
const access = loadAccess()
if (access.allowFrom.includes(senderId)) {
const name = from.username ? `@${from.username}` : senderId
await ctx.reply(`Paired as ${name}.`)
return
}
for (const [code, p] of Object.entries(access.pending)) {
if (p.senderId === senderId) {
await ctx.reply(
`Pending pairing — run in Claude Code:\n\n/telegram:access pair ${code}`
)
return
}
}
await ctx.reply(`Not paired. Send me a message to get a pairing code.`)
})
bot.on('message:text', async ctx => {
await handleInbound(ctx, ctx.message.text, undefined)
})
@@ -597,5 +643,10 @@ void bot.start({
onStart: info => {
botUsername = info.username
process.stderr.write(`telegram channel: polling as @${info.username}\n`)
void bot.api.setMyCommands([
{ command: 'start', description: 'Welcome and setup guide' },
{ command: 'help', description: 'What this bot can do' },
{ command: 'status', description: 'Check your pairing status' },
]).catch(() => {})
},
})