-
-
Save Nama/e61a13c29717b8eff48fa3ff41fc4ddd to your computer and use it in GitHub Desktop.
| /** | |
| * @name TwitFix | |
| * @version 1.5 | |
| * @authorLink https://github.com/Nama | |
| * @website https://yamahi.eu | |
| * @description Send twitter links with preview | |
| * @source https://gist.github.com/Nama/e61a13c29717b8eff48fa3ff41fc4ddd | |
| * @updateUrl https://gist.githubusercontent.com/Nama/e61a13c29717b8eff48fa3ff41fc4ddd/raw/ | |
| */ | |
| /* | |
| * Replaces all occurrences of twitter.com in URLs if it is a link to a post (contains status) | |
| * Removes all parameters and gets rid of mobile subdomain | |
| * Suffix the URL with the amount of images (eg. /3) and all images will be posted | |
| * Suffix the URL with /c to get a combined image perview (c.vxtwitter.com) | |
| * Suffix the URL with /t to not use vxtwitter | |
| * vxtiktok.com | |
| */ | |
| var TwitFix = (() => { | |
| function start() { | |
| let matchurls = /(https:\/\/vxtwitter\.com\/[\w]+\/status\/\d+)(?:\?s=20)?(\/[ct\d])?/g; | |
| let matchurl = /(https:\/\/vxtwitter\.com\/[\w]+\/status\/\d+)(\/[ct\d])?/g; | |
| BdApi.Patcher.before('TwitFix', BdApi.Webpack.getModule(BdApi.Webpack.Filters.byProps('sendMessage')), 'sendMessage', (_,props,ret)=> { | |
| let method = 'sendMessage' | |
| let newmsg = props[1].content; | |
| replace_url(method, props, newmsg) | |
| }) | |
| BdApi.Patcher.before('TwitFix', BdApi.Webpack.getModule(BdApi.Webpack.Filters.byProps('uploadFiles')), 'uploadFiles', (_,props,ret)=> { | |
| let method = 'uploadFiles' | |
| let newmsg = props[0].parsedMessage.content; | |
| replace_url(method, props, newmsg) | |
| }) | |
| function replace_url(method, props, newmsg) { | |
| //console.log(newmsg) | |
| newmsg = newmsg.replaceAll('https://vm.tiktok.com', 'https://vm.vxtiktok.com'); | |
| newmsg = newmsg.replaceAll('https://www.tiktok.com', 'https://www.vxtiktok.com'); | |
| newmsg = newmsg.replaceAll('https://mobile.twitter.com', 'https://twitter.com'); | |
| if (newmsg.includes('twitter.com') || newmsg.includes('x.com') && newmsg.includes('status')) { | |
| newmsg = newmsg.replaceAll('https://twitter.com', 'https://vxtwitter.com'); | |
| newmsg = newmsg.replaceAll('https://x.com', 'https://vxtwitter.com'); | |
| newmsg = newmsg.replaceAll(matchurls, '$1$2'); | |
| const urls = [...newmsg.matchAll(matchurl)]; | |
| // [0] vxtwitter URL | |
| // [1] eg. /4 suffix | |
| //console.log(urls[0][1]) | |
| for (let i = 0; i < urls.length; i++) { | |
| if (urls[i][2]) { | |
| let url = urls[i][1]; | |
| let suffix = urls[i][2].replace('/', ''); | |
| let newurl; | |
| if (!suffix) { | |
| newurl = url | |
| } | |
| else if (suffix === 'c') { | |
| newurl = url.replace('https://vxtwitter.com', 'https://c.vxtwitter.com') | |
| } | |
| else if (suffix === 't') { | |
| newurl = url.replace('https://vxtwitter.com', 'https://twitter.com') | |
| } | |
| else { | |
| suffix = parseInt(suffix); | |
| newurl = url + '/1\n'; // else "undefined" is in the message | |
| for (let m = 2; m <= suffix; m++) { | |
| newurl += url + '/' + m + '\n'; | |
| } | |
| } | |
| newmsg = newmsg.replace(urls[i][0], newurl); | |
| } | |
| } | |
| } | |
| if (method === 'sendMessage') { | |
| props[1].content = newmsg; | |
| } | |
| else { | |
| props[0].parsedMessage.content = newmsg; | |
| } | |
| } | |
| } | |
| function stop() { | |
| BdApi.Patcher.unpatchAll('TwitFix'); | |
| } | |
| return function() { return { | |
| getName: () => 'TwitFix', | |
| getShortName: () => 'TwitFix', | |
| getDescription: () => 'Send twitter-links with better preview', | |
| getVersion: () => '1.5', | |
| getAuthor: () => 'Yama', | |
| start: start, | |
| stop: stop | |
| }}; | |
| })(); | |
| module.exports = TwitFix; |
Hi @RoyRiv3r
either I forgot about the issue, or never found out. I just made it work and also got rid of the deprecated methods.
How did you found out about this plugin? I thought nobody is using it XD
Lol yeah, i was looking for a way to send twitter link with the embed since it's not working on discord anymore, i made my own https://github.com/RoyRiv3r/TwitterX.plugin.js/blob/main/TwitterX.plugin.js
Then I discovered later that whenever there is an attachment file to the message with url it doesn't use the same module it uses uploadFiles? so i just searched to see if there is any solution and i found your code. 👍
ah lol.
Ya, I don't know much JS and even less BD, so I searched their discord for messages in that regard to hopefully find something.
And I did. uploadFiles is the module.
The docs don't really help, since these only have BD things, not discord things.
You can use /2, /3, etc. without removing the ?s=20 parameter.
Hi, have you find a way to change the url whenever there is an attachment to it? Seems like it's using different module whenever there is file involved within message