Skip to content

Repository files navigation

FixTweetBot

Top.gg UpvotesTop.gg Serverslast commitCrowdinGitHub ReleaseGitHub Sponsors

Invite linkSupport serverDiscord App DirectoryTog.gg

FixTweetBot is a Discord bot that fixes social media embeds, using online services (such as FxTwitter)

In concrete terms, this bot automatically repost social media links as a 'fixed' version that contains a better embed (that allows to play videos directly in Discord, for example).

showcase

Features & Highlights

  • Supports Twitter, Nitter, Instagram, TikTok, Reddit, Threads, Bluesky, Snapchat, Facebook, Pixiv, Twitch, Spotify, DeviantArt, Newgrounds, Mastodon, Tumblr, BiliBili, Pinterest, IFunny, YouTube, Imgur, Weibo, Fur Affinity, Rule34.xxx, Danbooru, Gelbooru, e621, e926, Realbooru, Hypnohub, Konachan, Yande.re, Derpibooru, Rule34.paheal, XBooru, TBIB, and any custom websites of your choice
  • Posts translation
  • Disable by website, channel, member, role or keyword
  • Highly customizable behavior and appearance
  • Multiple languages supported
  • Modern interface for settings
  • Can respond to bots and webhooks
  • Respect markdown
  • Respect privacy
  • Source-available

More infos on the comparison table.

Usage

Simply send a message containing a compatible social media link, and the bot will remove the embed if any and automatically repost it as a 'fixed' link.

usage screenshot

You can also ignore a link by adding "fxignore" to your message: the normal embed will be kept as is.

You can manage the bot's settings with the /settings command.

settings screenshot

Lastly, you can use the /about command any time to get more information about the bot and to get help.

Add the bot to your server

You can add the bot to your server by clicking on the following link: Invite link or view it from the Discord App Directory

It is also listed on the websites (please leave an upvote/review if you like the bot!):

Comparison with other bots

FixTweetBotLinkFixDystopiaEmbedEzNano EmbeddingKetoComebackTwitterEmbedTweetFixerVxTVXC/FixTwitterReplayLink LurkerEmbe BotEmbed FixerLink Cleaner BotEmbeddedAzar BotKosakaMediaHelperpicsivQuickVidsAutoFxFixupXEmbed Fixer BotDiscord Embed BuddyOmniBotCLYPPY
Supported websitesTwitterNitterInstagramTikTokRedditThreadsBlueskySnapchatFacebookPinterestPixivTwitchSpotifyDeviantArtNewgroundsMastodonTumblrBilibiliIFunnyFur AffinityYouTubeYouTube MusicYouTube ShortsImgurWeiboRule34.xxxDanbooruGelbooruSafebooruE621 / E926RealbooruHypnohubKonachanYande.reDerpibooruRule34.pahealXbooruTBIB + Any Custom WebsitesTwitterYouTube ShortsTikTokInstagramRedditPixivBlueSkyTwitterTikTokRedditInstagramTwitterTikTokRedditSnapchatBilibiliPinterestIFunnyImgurWeiboRule34.xxxDanbooruGelbooruSafebooruE621 / E926RealbooruHypnohubKonachanYande.reDerpibooruRule34.pahealXbooruTBIB + Any Custom WebsitesTwitterRedditPinterestBlueskyInstagramTikTokPixivDeviantArtFur AffinityNewgroundsTwitterBlueskyWeiboYoutube ShortsFacebookTikTokInstagramRedditApple MusicSpotifyIMDbTwitterTwitterTwitterInstagramTikTok + Any Custom WebsitesTwitterTwitterRedditTwitchTiktokInstagramYoutube ShortsPixivFur AffinityFacebookIfunnyTumblrBlueskyBilibiliPinterestDanbooruInstagramTiktokTwitterRedditTumblrTwitterTiktokInstagramRedditTwitterPixivTikTokRedditInstagramFurAffinityTwitchIwaraBlueskyKemonoFacebookBiliBiliTumblrPTTDeviantArtTwitterTwitterRedditBlueskyTikTokTwitchInstagramPixivTumblrSoraFacebookTwitterTwitterPixivYoutubeTwitterBlueskyPixivTikTokTwitterRedditIFunnyYoutubeSnapchatImgurBiliBiliWeiboTwitterTwitterTwitterTwitterTikTokRedditInstagramTwitterRedditInstagramTwitchKickInstagramMedalRedditFacebookYoutubeTwitterBlueskyTikTokRule34VideoXVideosPornHubYouPornVimeoBiliBiliDailymotionGoogle DriveDiscord
Ignore message byChannel / Role / Member / KeywordRôleChannelKeywordsRole / MemberChannel / Role / MemberChannel
Modifications on the base message- Nothing
- Remove the embed
- Delete the message
Remove the embedDelete the message- Remove the embed
- Delete the message
Remove the embedRemove the embedRemove the embedDelete the message- Delete the message
- Nothing
Delete the messageRemoves the embedRemove the embedRemove the embedDelete the message- Remove the embed (bot)
- Delete the message (fake user)
Remove the embedRemove the embedNothing- Nothing
- Remove the embed
- Delete the message
Delete the messageDelete the messageDelete the messageRemove the embedDelete the messageNothing
Message authorBotBotBot- Bot
- Fake user
BotBotBotBot- Bot
- Fake user
BotBotBotBotFake userBot- Bot
- Fake user
BotBotBotBotBotFake userFake userBotBotBotBot
Message contentFixed links in hypertext with original and author links in hypertextFixed linksAuthor + full message content with fixed links in hypertext- Fixed link
- Fixed link in hypertext
- Medias as attachment
- Custom (premium)
EmptyFixed link in hypertextMedias as attachmentAuthor's mention + message content with fixed linksMessage content with fixed linksAuthor's mention + message content with fixed links in hypertextVideo as attachment and post content if video, else fixed link in hypertext + original and message links in hypertext (one per message)Full message content with fixed linksFixed links in invisible hypertext- Full message content with fixed links
- Full message content + medias as attachment
Author's mention + message content with first link fixed + original- Empty (bot - one per link)
- Full message content (fake user - one per link)
Author's mention + message content with first link fixed + originalEmpty (one per link)Fixed linksEmptyFixed linksFull message content with fixed linksFull message content with fixed linksAuthor mention + Full message content with fixed links on one lineFirst fixed linkFirst link fixed in authors' name hypertext + message content, without the first linkEmpty
Message embed- Normal view
- Direct view (following provider)
- Gallery view (following provider)
- Text view (following provider)
Normal viewNormal view- Normal view
- Direct view
One per post, one per video, one per quoteNormal viewOne per post, one per quoteNormal view- Normal view
- Direct view (Twitter)
Normal viewNormal view (if non-video)Normal viewNormal viewNormal viewNormal viewNormal viewNormal viewNormal viewNormal viewNormal view (only first link)Direct viewNormal viewNormal viewNormal viewNormal viewNormal viewVideo direct view (only the last link)
Respect markdown
Possibility for op to delete the bot's post
Other features and notes- Custom websites
- Posts translation
- Embed customization
- Advanced filters rules management
- Troubleshoot system
- Respond to bots/webhooks (premium)
- Open links in app on click
- Silent messages
- Website interface
- Download system
- Repond to bots/webhooks (premium)
- Transcription
- Translation
- Posts translation
- Download videos
- Tweet save
- Customization
- React to other bots
- Custom websites
- Posts translation (Twitter)
- Can respond to bots
- Customise provider/fixer for each website- Posts translation
- Respond to bots/webhooks
- Open links in app on click
- Automatic NSFW spoilering
- Channel transfer
- Buttons customization
- Reply to itself in an infinite loop- Channel-specific settings
- Posts translation
- Troubleshoot system
- Respond to bots/webhooks (premium)
- Custom avatar
- NSFW detection & spoiler
- URLs modificators (macros)
- Embed customization
- Download videos- Download
- Save on cloud
Languagesen, fr, pl, ru, es-ES, vi, zh-CN, zh-TW, pt-BR, ja (contribute to add more!)en, jaenenenenja, enenenja, enen-enen, es-ES, vi, zh-CN, zh-TW, nl-en-en-enenen----en
Open-sourced~ Source-available~ Source-available~ Source-available~ Source-available~ Source-available~ Source-available~ Source-available
_____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

Are you aware of any other similar bot that isn't included here? Feel free to open an issue!

Get help

If you need help, you can join the support server or open an issue.

Self-hosting

Docker

First, create a directory for the configuration, and copy the example docker-compose and fill it with your bot token. Change the default passwords to random strings. Rename it to docker-compose.yml.

You do not need to repeat the same configuration in override.config.yml, but you can still create one if you want to override default settings. To use it, uncomment the proper lines in your docker-compose:

# uncomment and create file if you want to override any default settings# volumes:# - ./override.config.yml:/usr/local/app/override.config.yml:ro

Then, simply run docker compose up -d.

Available environment variables

Environment variableComment
UIDUser ID used inside the container. Default value: 1000
GIDGroup ID used inside the container. Default value: 1000
DATABASE_HOSTDatabase hostname. Unset by default.
DATABASE_PORTDatabase port. Unset by default.
DATABASE_NAMEDatabase name. Unset by default.
DATABASE_USERDatabase user. Unset by default.
DATABASE_PASSWORDDatabase password. Unset by default.
DATABASE_DRIVERDatabase driver. Default value: "mysql"
DISCORD_TOKENYour bot's token.
DEV_GUILDOptional: Server ID that you want to use for controlling your bot's instance.

Bare metal

Simply install Python >= 3.10, clone the repository and run pip install -r requirements.txt.

Make sure to have a database set up using MySQL, MariaDB (recommended), Microsoft SQL Server, PostgreSQL or SQLite.

Then, create a override.config.yml file containing the following:

token: <your_personal_token>dev_guild: <your_personnal_guild_id> # optional, for dev commandsdatabase:
host: <your_database_host>driver: <your_database_driver> # (e.g., mysql for MySQL/MariaDB)database: <your_database_name>user: <your_database_user>password: <your_database_password>port: <your_database_port>

You can also override any other config value from config.yml in this file. You might also want to modify other configuration options. More information about how to do it on discore.

Now, initialize the database by running masonite-orm migrate -C database/config.py -d database/migrations.

Finally, run python main.py.

Setup the bot

The required scopes are:

  • applications.commands
  • bot

And the required permissions:

  • Embed Links
  • Manage Messages
  • Manage Webhooks
  • Read Message History
  • Send Messages
  • Send Messages in Threads
  • View Channels

Help & Contributing

If you want to help, first of all, thank you! There are many ways to contribute:

Money

You can buy the premium version of the bot, that will give you access to more features and will help me to keep the bot running.

You can also simply donate or sponsor me using GitHub Sponsors, you'll get cool little rewards, and you can even have your name displayed on the readme, and it will help me to keep the bot running.

Enhance the bot

You can help to translate the bot into your language on Crowdin.

If you're a developer, you can help by fixing bugs, adding new features, or improving the code quality by opening a Pull Request.

Vote/Review the bot

You can leave a star on the GitHub repository.

You can also leave an upvote on the bot on these websites:

Finally, you can leave a review of the bot on these websites:

Fixers

As you may know, the bot is nothing on its own without the fixers that allow it to display content from various websites. If you want to help, you can support the fixers' developers by donating to them or contributing to their projects.

You can find a list of the fixers used by the bot in the Credits section.

Links

Credits

Fixers

Nothing would be possible without the fixers that allow the bot to generate embeds. Don't hesitate to support them!

Note

We're not affiliated with any of these services.

Contributors

A big thank you to all the people who contributed to the project, whether by code, translations or donations!

Dependencies

The bot is built on top of the following libraries:

Awesome fixers

Here's, for the record, a non-exhaustive list of the fixers/proxies/providers spotted in the wild:

Are you aware of any other fixer that isn't included here? Feel free to open an issue!

Do you know of another fixer that is not included here? Feel free to open an issue!

Releases

Sponsor this project

Packages

Used by

Contributors

Languages