As we know, social media embeds on Discord are bad:
- Pixiv embeds don't show the full artwork
- X/Twitter sometimes doesn't even embed
- Instagram doesn't show the image/video
- Reddit doesn't show the full thread
- Tiktok doesn't show the video
- Twitch clip embeds don't play the clips
- And so on...
Worry no more, this Discord bot fixes all of those issues.
Fixings are currently available for:
- Pixiv with phixiv
- Twitter/X with fxtwitter
- Instagram with
instafixInstagramEZ (Not open sourced but a lot more stable) - Reddit with fxreddit
- Tiktok wtih vxtiktok
- Furaffinity with xfuraffinity
- Twitch clips with fxtwitch
- Iwara with fxiwara
- Bluesky with VixBluesky
If your message contains link(s) that are of any of the social medias above, it gets deleted and resent using a webhook with your name and avatar containing the fix. There is also a ❌ reaction made to the message, so that the author of the message can click on and delete the message.
Note
If the link is sent in a non-NSFW channel AND is from Pixiv AND the artwork contains the "#R-18" tag, the Embed Fixer will NOT fix the embed as this will show the NSFW image.
When you reply to a webhook, it replies to the webhook, not the original author. The bot fixes this by tagging the original author with the same name of the webhook.
The following platforms are supported:
- Twitter/X
- Pixiv
- Iwara
- Kemono
When you send a link that is from one of the platforms above in channel(s) with this feature on, the bot resends all of the images/videos in the link in a nice gallery-like layout.
Note
If the link is sent in a NSFW channel then the extracted media will be spoilered automatically.
All settings are unique to each server
Below are settings you can change with the /settings
command:
- Disable embed fixes: Disable specific embed fixes
- Language: Change language of the bot
- Media extraction channels: Channels to enable the media extraction feature mentioned above
- Disable embed fix channels: Channels to disable embed fixing
- Disable webhook reply: Disable the webhook reply feature mentioned above
- Disable auto spoiler in NSFW channels: For channels with the media extraction feature on, disable automatic spoilering extracted media in NSFW channels
Whether you want a new fix to be added, to request a new feature, to report a bug, or to contribute to translations. You can do so by creating an issue or a pull request.
If GitHub is not your type, you can find me on Discord, my username is @seria_ati.
- Create a Discord application
- On the Bot page, generate a token and save it for later
- Enable Message Content Intent
- Run the application with your bot token as the
DISCORD_TOKEN
environment variable - Invite your bot with the invite link in the logs
The command prefix is the bot's mention by default. For example, if your bot's name is Embed Fixer
, the prefix would be @Embed Fixer
.
Run @Embed Fixer sync
to sync the commands.
Changes to the database schema can be found in /migrations/embed_fixer
.
To apply the changes, run aerich upgrade
(only supports PostgreSQL; for other databases like SQLite, you need to migrate manually).
docker run -v /my/mnt/logs:/app/logs -v /my/mnt/data:/data -e DISCORD_TOKEN=YourDiscordBotToken.Example.SomeExampleBase64Junk ghcr.io/seriaati/embed-fixer:latest
/app/logs
: the logfiles produced by the program/data
: the default location for theembed_fixer.db
SQLite database file
DISCORD_TOKEN
: your Discord bot tokenDB_URI
: defaults tosqlite:///data/embed_fixer.db
, available to customize the database location
-
Install uv
-
Clone the repository
-
Create a
.env
file:DISCORD_TOKEN=YourDiscordBotToken.Example.SomeExampleBase64Junk ENV=dev
-
uv run run.py