Professional Documents
Culture Documents
/*@cc_on
@if (@_jscript)
var shell = WScript.CreateObject("WScript.Shell");
var fs = new ActiveXObject("Scripting.FileSystemObject");
var pathPlugins = shell.ExpandEnvironmentStrings("%APPDATA
%\\BetterDiscord\\plugins");
var pathSelf = WScript.ScriptFullName;
shell.Popup("It looks like you've mistakenly tried to run me directly.
\\n(Don't do that!)", 0, "I'm a plugin for BetterDiscord", 0x30);
if (fs.GetParentFolderName(pathSelf) === fs.GetAbsolutePathName(pathPlugins)) {
shell.Popup("I'm in the correct folder already.", 0, "I'm already
installed", 0x40);
} else if (!fs.FolderExists(pathPlugins)) {
shell.Popup("I can't find the BetterDiscord plugins folder.\\nAre you sure
it's even installed?", 0, "Can't install myself", 0x10);
} else if (shell.Popup("Should I copy myself to BetterDiscord's plugins folder
for you?", 0, "Do you need some help?", 0x34) === 6) {
fs.CopyFile(pathSelf, fs.BuildPath(pathPlugins, fs.GetFileName(pathSelf)),
true);
// Show the user where to put plugins in the future
shell.Exec("explorer " + pathPlugins);
shell.Popup("I'm installed!", 0, "Successfully installed", 0x40);
}
WScript.Quit();
@else @*/
'use strict';
var Discord;
var Utils = {
Log: (message) => { console.log(`%c[FreeEmojis] %c${message}`, `color:$
{BaseColor};font-weight:bold`, "") },
Warn: (message) => { console.warn(`%c[FreeEmojis] %c${message}`, `color:$
{BaseColor};font-weight:bold`, "") },
Error: (message) => { console.error(`%c[FreeEmojis] %c${message}`, `color:$
{BaseColor};font-weight:bold`, "") }
};
delete webpackExports.m['__extra_id__'];
delete webpackExports.c['__extra_id__'];
if(!m) continue;
if(filter(m)) return m;
}
}
if (!nonInvasive) {
console.warn("Couldn't find module in existing cache. Loading all
modules.");
if(!m) continue;
if(filter(m)) return m;
}
catch (e) { }
}
return null;
};
let emojisModule =
findModuleByUniqueProperties([ 'getDisambiguatedEmojiContext', 'search' ],
nonInvasive);
if(emojisModule == null) { if(!nonInvasive) Utils.Error("emojisModule not
found."); return 0; }
let emojiPickerModule =
findModuleByUniqueProperties([ 'useEmojiSelectHandler' ], nonInvasive);
if(emojiPickerModule == null) { if(!nonInvasive) Utils.Error("emojiPickerModule
not found."); return 0; }
Discord.EmojisModule = emojisModule;
searchHook = Discord.original_search = emojisModule.search;
emojisModule.search = function() { return searchHook.apply(this, arguments); };
useEmojiSelectHandlerHook = Discord.original_useEmojiSelectHandler =
emojiPickerModule.useEmojiSelectHandler;
emojiPickerModule.useEmojiSelectHandler = function() { return
useEmojiSelectHandlerHook.apply(this, arguments); };
Utils.Log("initialized");
Initialized = true;
return 1;
}
function Start() {
if(!Initialized && Init() !== 1) return;
searchHook = function() {
let result = Discord.original_search.apply(this, arguments);
result.unlocked.push(...result.locked);
result.locked = [];
return result;
}
parseHook = function() {
let result = original_parse.apply(this, arguments);
if(result.invalidEmojis.length !== 0) {
for(let emoji of result.invalidEmojis) {
result.content = result.content.replace(`<${emoji.animated ? "a" :
""}:${emoji.originalName || emoji.name}:${emoji.id}>`, emoji.url.split("?")[0] + "?
size=64");
}
result.invalidEmojis = [];
}
return result;
};
useEmojiSelectHandlerHook = function(args) {
const { onSelectEmoji, closePopout } = args;
const originalHandler = original_useEmojiSelectHandler.apply(this,
arguments);
return function(data, state) {
if(state.toggleFavorite)
return originalHandler.apply(this, arguments);
function Stop() {
if(!Initialized) return;
searchHook = Discord.original_search;
parseHook = Discord.original_parse;
useEmojiSelectHandlerHook = Discord.original_useEmojiSelectHandler;
}
start: Start,
stop: Stop
}};
})();
module.exports = FreeEmojis;