Public
Like
2
Discord-to-Linear
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in miliseconds.
How it works: React to any Discord message with a configured emoji (like
:huss:
or 🧿
- used as an example in this val) and it automatically becomes
a Linear ticket with context from the Discord thread.
Team members can use custom emojis to identify themselves as the ticket creator.
- Environment Variables
- Setting up the Discord bot
Before you can run this cron, you must add the following Environment Variables (via left sidebar of this val):
DISCORD_BOT_TOKEN
: Your Discord bot token- Go to
Discord Developer Portal →
Create application → Complete the steps → Go to
Bot
on the sidebar → Copy token (orReset Token
and thenCopy
if you didn't copy it the first time) - Important: Enable "Message Content Intent" in Bot → Privileged Gateway Intents
- Go to
Discord Developer Portal →
Create application → Complete the steps → Go to
DISCORD_SERVER_ID
: Your Discord server ID (right-click server name → Copy ID)DISCORD_MONITORED_CHANNELS
: Comma-separated channel IDs to monitor (right-click channel → Copy ID)- Example:
1327384540187983926,1327384540187983927
- Example:
LINEAR_API_KEY
: Your Linear API key- For Linear Teams accounts, you need API key permissions from a workspace
admin.
- Members can create personal API keys from Settings → Account → Security & Access.
- For Linear Teams accounts, you need API key permissions from a workspace
admin.
LINEAR_TEAM_ID
: Your Linear team UUID, this is NOT the 3 letterTeam Identifier
found in issue IDs- On any Linear page, type
CMD+K
to pull up the quick menu + enterDev: Copy model UUID
to copy your UUID - Example:
6312a2a0-633b-47dc-a225-81d5d1759bf4
- On any Linear page, type
- Create bot: Discord Developer Portal → New Application → Bot
- Set permissions: OAuth2 → URL Generator → selecting
bot
unfurls a Bot Permissions dropdown below → SelectView Channels
,Read Message History
,Add Reactions
- Enable intents: Bot → Privileged Gateway Intents → ✅ Message Content Intent
- Invite bot: Use generated URL to add bot to your server
main.tsx
- Main cron job that runs every minute checking for new reactions, you can also manually pressRun
to run it immediately- Emoji Configuration - Edit
backend/config.ts
to customize team member emojis:
TARGET_EMOJIS: {
"huss": "Huss", // Custom Discord emoji :huss:, use just the name without colons (e.g., `"huss"` for `:huss:`)
"nas": "Nas", // Custom Discord emoji :nas:
"🧿": "Team", // Unicode built-in emoji, use the actual emoji (e.g., `"🧿"`)
}