A Discord bot that automatically replaces social media links with embed-friendly alternatives (fxtwitter.com, ddinstagram.com, tnktok.com, etc.). Messages are deleted and reposted via webhook under the original user's name and avatar.
- Auto-fix links — Twitter/X, Instagram, and TikTok links are replaced with embed-friendly domains
- Seamless reposting — Messages are deleted and resent via webhook using the original user's name and profile picture
- Per-server configuration — Each server picks which fixer services to use via slash commands
- Curated by you — Bot maker defines available fixer options; server admins choose from the list
- Persistent config — SQLite database stores all settings across restarts
| Platform | Domains | Service Options |
|---|---|---|
| Twitter / X | twitter.com, x.com | fxtwitter.com, vxtwitter.com, fixupx.com |
| instagram.com | ddinstagram.com, fxinstagram.com, vxinstagram.com | |
| TikTok | tiktok.com | tiktxk.com, fixtiktok.com, tnktok.com |
- Node.js 18+
- A Discord Application with a bot token
- Clone the repo and install dependencies:
npm install- Create a
.envfile:
BOT_TOKEN=your_discord_bot_token_here
-
Invite the bot to your server with scopes
bot+applications.commandsand permissionsSend Messages,Manage Webhooks,Read Message History,Delete Messages,View Channels. -
Start the bot:
npm start- Push the repo to GitHub.
- On Railway.app, create a new project from your GitHub repo.
- Add environment variable:
BOT_TOKEN= your Discord bot token. - Add a persistent volume (New → Volume) mounted at
/data. - Deploy. The bot auto-applies default fixers when it joins a server.
All commands require Manage Server permission.
| Command | Description |
|---|---|
/channels add #channel |
Start monitoring a channel |
/channels remove #channel |
Stop monitoring a channel |
/channels list |
Show all monitored channels |
| Command | Description |
|---|---|
/fixer set domain: Twitter / X service: fxtwitter.com |
Enable a fixer for a platform |
/fixer remove domain: Twitter / X |
Disable a fixer |
/fixer list |
Show current fixer configuration |
/fixer defaults list |
Show the bot maker's pre-configured defaults |
| Command | Description |
|---|---|
/help |
Show bot info and all available commands |
Edit curated-fixers.json to add, remove, or change fixer options:
"twitter": {
"label": "Twitter / X",
"domains": ["twitter.com", "x.com"],
"default": "fxtwitter",
"services": [
{ "id": "fxtwitter", "label": "fxtwitter.com", "replacement": "fxtwitter.com" },
{ "id": "vxtwitter", "label": "vxtwitter.com", "replacement": "vxtwitter.com" }
]
}default— the service auto-applied when a server first adds the botstripSubdomains— subdomains to strip before fixing (e.g., TikTok'svt.)- Add new entries for additional platforms
| File | Purpose |
|---|---|
index.js |
Bot entry point and command handling |
db.js |
SQLite database layer (auto-creates data.db) |
logger.js |
Timestamped logging to bot.log and console |
curated-fixers.json |
Bot maker's curated list of fixer services |
.env |
Bot token and configuration (not committed) |
Logs are written to bot.log in the data directory (DATA_DIR or project root) with timestamps:
[2026-05-23T12:00:00.000Z] [INFO] Logged in as EmbedFixer#1234
[2026-05-23T12:00:00.000Z] [INFO] Applied defaults to My Server
[2026-05-23T12:00:00.000Z] [ERROR] [123456789] Failed: Missing Permissions