A modern, multi-language Telegram support bot for teams and projects. Supports bug reports, feature requests, development orders, and admin ticket status management. Deployable on Vercel (webhook) and locally (polling).
- Multi-language support (English, Russian, Japanese, Spanish, Chinese)
- User-friendly menu with emoji and rich formatting
- Bug report, feature request, and development order flows
- Admin can change ticket status (in progress, closed, etc.)
- User receives notifications when ticket status changes
- Works on Vercel (webhook) and locally (polling)
-
Clone the repository:
git clone https://github.com/Nighty3098/TechSupportBot.git cd TechSupportBot
-
Install dependencies:
npm install
-
Configure environment variables:
- Copy
.env.example
to.env
and fill in your values:BOT_TOKEN=your_bot_token SUPPORT_CHAT_USERNAME=your_support_username NOTIFY_CHAT=your_notify_chat_id
- Copy
-
Run the bot in polling mode:
npm run dev # or npm run local
- Push your code to GitHub.
- Connect your repo to Vercel.
- Set environment variables in Vercel dashboard:
BOT_TOKEN
SUPPORT_CHAT_USERNAME
NOTIFY_CHAT
- Deploy!
- Set the Telegram webhook:
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/setWebhook?url=https://<your-vercel-domain>/api/bot
TechSupportBot/
βββ api/
β βββ bot.ts # Vercel serverless handler (webhook)
βββ src/
β βββ bot.ts # Main bot logic
β βββ local.ts # Local entry point (polling)
β βββ locales/ # All language files
β βββ messages.en.ts
β βββ messages.ru.ts
β βββ messages.ja.ts
β βββ messages.es.ts
β βββ messages.zh.ts
βββ public/
β βββ header.png # (Optional) Local image for polling mode
βββ package.json
βββ vercel.json
βββ README.md
BOT_TOKEN
β Your Telegram bot tokenSUPPORT_CHAT_USERNAME
β Username for dev orders (without @)NOTIFY_CHAT
β Chat ID for notifications (can be group/channel ID)
- Users interact with the bot via menu buttons
- Admins can change ticket status via inline buttons in the support chat
- Users are notified when their ticket is in progress or closed
- Language can be changed via the menu or
/lang
command
- Use polling mode for local development
- The bot will send a welcome image only in local mode (if
public/header.png
exists) - All formatting uses HTML (
parse_mode: 'HTML'
)
- The bot works as a webhook via
api/bot.ts
- No image is sent in welcome messages on Vercel (text only)
- Make sure to set the webhook after each deploy
MIT