Files
2026-07-13 13:34:48 +08:00

78 lines
2.3 KiB
TypeScript

import { z, IntegrationDefinition } from '@botpress/sdk'
import typingIndicator from './bp_modules/typing-indicator'
import { telegramMessageChannels } from './definitions/channels'
export default new IntegrationDefinition({
name: 'telegram',
version: '1.0.9',
title: 'Telegram',
description: 'Engage with your audience in real-time.',
icon: 'icon.svg',
readme: 'hub.md',
configuration: {
identifier: {
linkTemplateScript: 'linkTemplate.vrl',
},
schema: z.object({
botToken: z
.string()
.min(1)
.secret()
.hidden()
.optional()
.title('Bot Token')
.describe('Legacy Telegram bot token. New installations store this in integration state.'),
typingIndicatorEmoji: z
.boolean()
.default(false)
.title('Typing Indicator Emoji')
.describe('Temporarily add an emoji reaction to received messages to indicate when bot is processing message'),
}),
},
states: {
credentials: {
type: 'integration',
schema: z.object({
botToken: z.string().title('Bot Token').min(1).secret().describe('The Telegram bot token'),
}),
},
},
channels: {
channel: {
title: 'Channel',
description: 'Telegram Channel',
messages: telegramMessageChannels,
message: {
tags: {
id: { title: 'ID', description: 'The message id' },
chatId: { title: 'Chat ID', description: 'The message Chat id' },
},
},
conversation: {
tags: {
id: { title: 'ID', description: 'The conversation ID' },
fromUserId: { title: 'From User ID', description: 'The conversation From User id' },
fromUserUsername: { title: 'From User UserName', description: 'The converstation from user username' },
fromUserName: { title: 'From User Name', description: 'The conversation from user name' },
chatId: { title: 'Chat ID', description: 'The conversation Chat id' },
},
},
},
},
actions: {},
events: {},
user: {
tags: {
id: { title: 'ID', description: 'The id of the user' },
},
},
attributes: {
category: 'Communication & Channels',
guideSlug: 'telegram',
repo: 'botpress',
},
}).extend(typingIndicator, () => ({
entities: {},
}))