A Telegram bot built with Node.js that connects your Linear project management system to a Telegram group.
It allows team members to create, update, list, and delete tasks directly from Telegram.
- β
Create tasks with
/addand assign by name/email - π List all tasks grouped by status (Todo, In Progress, Done)
- π Change task status with
/doneand/progress - ποΈ Delete tasks with
/delete - π Restrict bot usage to a specific Telegram group
- π Task IDs are shown in Markdown for easy copy-paste
| Command | Description |
|---|---|
/add title @user |
Create a new task and optionally assign it |
/list |
Show all tasks grouped by status |
/done <task_id> |
Mark a task as Done |
/progress <task_id> |
Move a task to In Progress |
/delete <task_id> |
Delete a task by its ID |
/ping |
Check if the bot is online + logs Telegram group ID |
π‘ Tip: To get your Telegram group ID, simply type
/pingin the group. The bot will reply with the group ID β copy and use it inALLOWED_TELEGRAM_GROUP_ID.
Create a .env file with the following:
TELEGRAM_BOT_TOKEN=your_telegram_bot_token
LINEAR_API_KEY=your_linear_api_key
LINEAR_TEAM_ID=your_linear_team_id
LINEAR_TODO_STATE_ID=todo_state_id
LINEAR_IN_PROGRESS_STATE_ID=in_progress_state_id
LINEAR_DONE_STATE_ID=done_state_id
ALLOWED_TELEGRAM_GROUP_ID=-100111111111git clone https://github.com/mehrabsha/linear-telegram-bot.git
cd linear-telegram-bot
npm install
node index.jsMake sure your bot is added as an admin to the allowed Telegram group.
linear-telegram-bot/
βββ commands/
β βββ addIssue.js
β βββ listTasks.js
β βββ markDone.js
β βββ setInProgress.js
β βββ deleteTask.js
β βββ ping.js
βββ linear.js
βββ index.js
βββ .env
- All commands are restricted to a single Telegram group using
ALLOWED_TELEGRAM_GROUP_ID. - Sensitive data (API keys, tokens) should never be committed to version control.
MIT License
PRs welcome! For improvements or bug reports, feel free to open an issue or submit a pull request.