|
class SnippetApi { |
|
constructor() { |
|
const _mods = webpackChunkdiscord_app.push([[Symbol()],{},({c})=>Object.values(c)]); |
|
|
|
this._mods = _mods; |
|
|
|
webpackChunkdiscord_app.pop(); |
|
} |
|
|
|
findByProps = (...props) => { |
|
for (let m of this._mods) { |
|
try { |
|
if (!m.exports || m.exports === window) continue; |
|
if (props.every((x) => m.exports?.[x])) return m.exports; |
|
|
|
for (let ex in m.exports) { |
|
if (props.every((x) => m.exports?.[ex]?.[x])) return m.exports[ex]; |
|
} |
|
} catch {} |
|
} |
|
} |
|
|
|
getStore = (store) => { |
|
return Object.values(Object.values(this._mods.find(x => x?.exports?.default?.getUsers).exports.default._dispatcher._actionHandlers)[3].nodes).filter(s => s.name === store)[0]; |
|
}; |
|
|
|
getActionHandler = (store, actionHandler) => { |
|
let stores = Object.values(Object.values(this._mods.find(x => x?.exports?.default?.getUsers).exports.default._dispatcher._actionHandlers)[3].nodes).filter(s => s.name === store); |
|
let found; |
|
|
|
for (var store of stores) { |
|
if (!found && store.actionHandler[actionHandler]) found = store; |
|
}; |
|
|
|
if (found) return found.actionHandler[actionHandler]; |
|
else return console.error(`${actionHandler} action handler could not found!`); |
|
}; |
|
|
|
getAllFunctions = () => { |
|
return this._mods.filter(m => typeof m?.exports?.Z === "object").map(m => Object.entries(m?.exports?.Z).filter(entry => typeof entry[1] === "function").map(entry => entry[0])); |
|
}; |
|
|
|
searchFunctions = (query) => { |
|
return this._mods.filter(m => typeof m?.exports?.Z === "object").map(m => Object.entries(m?.exports?.Z).filter(entry => typeof entry[1] === "function" && entry[0].toLowerCase().includes(search)).map(entry => entry[0])).filter(array => array.length !== 0); |
|
}; |
|
|
|
searchStores = (query) => { |
|
return Object.fromEntries(this._mods.find(x => x?.exports?.Z?.connectStores).Store.getAll().filter(store => store.getName().toLowerCase().includes(query)).map(matchingStore => [matchingStore.getName(), matchingStore])); |
|
}; |
|
|
|
searchActionHandlers = (query) => { |
|
return Object.keys(Object.values(this._mods.find(x => x?.exports?.default?.getUsers).exports.default._dispatcher._actionHandlers)[0]).filter(key => key.toLowerCase().includes(query)); |
|
}; |
|
|
|
findModule = (func) => this.this._mods.find(func) |
|
|
|
get React() {return this.findByProps("createElement", "cloneElement");} |
|
get ReactDOM() {return this.findByProps("render", "findDOMNode");} |
|
|
|
/* Guild Info, Stores, and Utilities */ |
|
get GuildStore() {return this.findByProps("getGuild");} |
|
get SortedGuildStore() {return this.findByProps("getSortedGuilds");} |
|
get SelectedGuildStore() {return this.findByProps("getLastSelectedGuildId");} |
|
get GuildSync() {return this.findByProps("getSyncedGuilds");} |
|
get GuildInfo() {return this.findByProps("getAcronym");} |
|
get GuildChannelsStore() {return this.findByProps("getChannels", "getDefaultChannel");} |
|
get GuildMemberStore() {return this.findByProps("getMember");} |
|
get MemberCountStore() {return this.findByProps("getMemberCounts");} |
|
get GuildEmojiStore() {return this.findByProps("getEmojis");} |
|
get GuildActions() {return this.findByProps("requestMembers");} |
|
get GuildPermissions() {return this.findByProps("getGuildPermissions");} |
|
|
|
/* Channel Store & Actions */ |
|
get ChannelStore() {return this.findByProps("getChannel", "getDMFromUserId");} |
|
get SelectedChannelStore() {return this.findByProps("getLastSelectedChannelId");} |
|
get ChannelActions() {return this.findByProps("selectChannel");} |
|
get PrivateChannelActions() {return this.findByProps("openPrivateChannel");} |
|
|
|
/* Current User Info, State and Settings */ |
|
get UserInfoStore() {return this.findByProps("getSessionId");} |
|
get UserSettingsStore() {return this.findByProps("guildPositions");} |
|
get StreamerModeStore() {return this.findByProps("hidePersonalInformation");} |
|
get UserSettingsUpdater() {return this.findByProps("updateRemoteSettings");} |
|
get OnlineWatcher() {return this.findByProps("isOnline");} |
|
get CurrentUserIdle() {return this.findByProps("isIdle");} |
|
get RelationshipStore() {return this.findByProps("isBlocked", "getFriendIDs");} |
|
get RelationshipManager() {return this.findByProps("addRelationship");} |
|
get MentionStore() {return this.findByProps("getMentions");} |
|
|
|
/* User Stores and Utils */ |
|
get UserStore() {return this.findByProps("getCurrentUser", "getUser");} |
|
get UserStatusStore() {return this.findByProps("getStatus", "getState");} |
|
get UserTypingStore() {return this.findByProps("isTyping");} |
|
get UserActivityStore() {return this.findByProps("getActivity");} |
|
get UserNameResolver() {return this.findByProps("getName");} |
|
get UserNoteStore() {return this.findByProps("getNote");} |
|
get UserNoteActions() {return this.findByProps("updateNote");} |
|
|
|
/* Emoji Store and Utils */ |
|
get EmojiInfo() {return this.findByProps("isEmojiDisabled");} |
|
get EmojiUtils() {return this.findByProps("getGuildEmoji");} |
|
get EmojiStore() {return this.findByProps("getByCategory", "EMOJI_NAME_RE");} |
|
|
|
/* Invite Store and Utils */ |
|
get InviteStore() {return this.findByProps("getInvites");} |
|
get InviteResolver() {return this.findByProps("resolveInvite");} |
|
get InviteActions() {return this.findByProps("acceptInvite");} |
|
|
|
/* Discord Objects & Utils */ |
|
get DiscordConstants() {return this.findByProps("Permissions", "ActivityTypes", "StatusTypes");} |
|
get DiscordPermissions() {return this.findByProps("Permissions", "ActivityTypes", "StatusTypes").Permissions;} |
|
get Permissions() {return this.findByProps("computePermissions");} |
|
get ColorConverter() {return this.findByProps("hex2int");} |
|
get ColorShader() {return this.findByProps("darken");} |
|
get TinyColor() {return WebpackModules.getByPrototypes("toRgb");} |
|
get ClassResolver() {return this.findByProps("getClass");} |
|
get ButtonData() {return this.findByProps("ButtonSizes");} |
|
get NavigationUtils() {return this.findByProps("transitionTo", "replaceWith", "getHistory");} |
|
get KeybindStore() {return this.findByProps("keyToCode");} |
|
|
|
/* Discord Messages */ |
|
get MessageStore() {return this.findByProps("getMessage", "getMessages");} |
|
get ReactionsStore() {return this.findByProps("getReactions", "_dispatcher");} |
|
get MessageActions() {return this.findByProps("jumpToMessage", "_sendMessage");} |
|
get MessageQueue() {return this.findByProps("enqueue");} |
|
|
|
/* Experiments */ |
|
get ExperimentStore() {return this.findByProps("getExperimentOverrides");} |
|
get ExperimentsManager() {return this.findByProps("isDeveloper");} |
|
get CurrentExperiment() {return this.findByProps("getExperimentId");} |
|
|
|
/* Streams */ |
|
get StreamStore() {return this.findByProps("getAllActiveStreams", "getStreamForUser");} |
|
get StreamPreviewStore() {return this.findByProps("getIsPreviewLoading", "getPreviewURL");} |
|
|
|
/* Images, Avatars and Utils */ |
|
get ImageResolver() {return this.findByProps("getUserAvatarURL", "getGuildIconURL");} |
|
get ImageUtils() {return this.findByProps("getSizedImageSrc");} |
|
get AvatarDefaults() {return this.findByProps("getUserAvatarURL", "DEFAULT_AVATARS");} |
|
|
|
/* Drag & Drop */ |
|
get DNDSources() {return this.findByProps("addTarget");} |
|
get DNDObjects() {return this.findByProps("DragSource");} |
|
|
|
/* Electron & Other Internals with Utils*/ |
|
get ElectronModule() {return this.findByProps("setBadge");} |
|
get Flux() {return this.findByProps("Store", "connectStores");} |
|
get Dispatcher() {return this.findByProps("dirtyDispatch");} |
|
get PathUtils() {return this.findByProps("hasBasename");} |
|
get NotificationModule() {return this.findByProps("showNotification");} |
|
get RouterModule() {return this.findByProps("Router");} |
|
get APIModule() {return this.findByProps("getAPIBaseURL");} |
|
get AnalyticEvents() {return this.findByProps("AnalyticEventConfigs");} |
|
get Buffers() {return this.findByProps("Buffer", "kMaxLength");} |
|
get DeviceStore() {return this.findByProps("getDevices");} |
|
get SoftwareInfo() {return this.findByProps("os");} |
|
get i18n() {return this.findByProps("Messages", "languages");} |
|
|
|
/* Media Stuff (Audio/Video) */ |
|
get MediaDeviceInfo() {return this.findByProps("Codecs", "MediaEngineContextTypes");} |
|
get MediaInfo() {return this.findByProps("getOutputVolume");} |
|
get MediaEngineInfo() {return this.findByProps("determineMediaEngine");} |
|
get VoiceInfo() {return this.findByProps("getEchoCancellation");} |
|
get SoundModule() {return this.findByProps("playSound");} |
|
|
|
/* Window, DOM, HTML */ |
|
get WindowInfo() {return this.findByProps("isFocused", "windowSize");} |
|
get DOMInfo() {return this.findByProps("canUseDOM");} |
|
|
|
/* Locale/Location and Time */ |
|
get Moment() {return this.findByProps("parseZone");} |
|
get LocationManager() {return this.findByProps("createLocation");} |
|
get Timestamps() {return this.findByProps("fromTimestamp");} |
|
|
|
/* Strings and Utils */ |
|
get StringFormats() {return this.findByProps("a", "z");} |
|
get StringUtils() {return this.findByProps("toASCII");} |
|
|
|
/* URLs and Utils */ |
|
get URLParser() {return this.findByProps("Url", "parse");} |
|
get ExtraURLs() {return this.findByProps("getArticleURL");} |
|
|
|
/* Text Processing */ |
|
get hljs() {return this.findByProps("highlight", "highlightBlock");} |
|
get SimpleMarkdown() {return this.findByProps("parseBlock", "parseInline", "defaultOutput");} |
|
|
|
/* DOM/React Components */ |
|
/* ==================== */ |
|
get LayerManager() {return this.findByProps("popLayer", "pushLayer");} |
|
get UserSettingsWindow() {return this.findByProps("open", "updateAccount");} |
|
get ChannelSettingsWindow() {return this.findByProps("open", "updateChannel");} |
|
get GuildSettingsWindow() {return this.findByProps("open", "updateGuild");} |
|
|
|
/* Modals */ |
|
get ModalActions() {return this.findByProps("openModal", "updateModal");} |
|
get ModalStack() {return this.findByProps("push", "update", "pop", "popWithKey");} |
|
get UserProfileModals() {return this.findByProps("fetchMutualFriends", "setSection");} |
|
get ChangeNicknameModal() {return this.findByProps("open", "changeNickname");} |
|
get CreateChannelModal() {return this.findByProps("open", "createChannel");} |
|
get PruneMembersModal() {return this.findByProps("open", "prune");} |
|
get NotificationSettingsModal() {return this.findByProps("open", "updateNotificationSettings");} |
|
|
|
/* Popouts */ |
|
get PopoutStack() {return this.findByProps("open", "close", "closeAll");} |
|
get PopoutOpener() {return this.findByProps("openPopout");} |
|
|
|
/* Context Menus */ |
|
get ContextMenuActions() {return this.findByProps("openContextMenu");} |
|
|
|
/* Misc */ |
|
get FlexChild() {return this.findByProps("Child");} |
|
get Titles() {return this.findByProps("Tags", "default");} |
|
get Tooltip() {return this.findByProps("TooltipContainer").TooltipContainer;} |
|
|
|
/* Scrollers */ |
|
get ScrollerThin() {return this.findByProps("ScrollerThin").ScrollerThin;} |
|
get ScrollerAuto() {return this.findByProps("ScrollerAuto").ScrollerAuto;} |
|
get AdvancedScrollerThin() {return this.findByProps("AdvancedScrollerThin").AdvancedScrollerThin;} |
|
get AdvancedScrollerAuto() {return this.findByProps("AdvancedScrollerAuto").AdvancedScrollerAuto;} |
|
get AdvancedScrollerNone() {return this.findByProps("AdvancedScrollerNone").AdvancedScrollerNone;} |
|
|
|
get Dropdown() {return this.findByProps("SingleSelect").SingleSelect;} |
|
}; |
|
|
|
window.snippetApi = new SnippetApi(); |
VM1043:3 Uncaught TypeError: Cannot convert undefined or null to object
at Function.values ()
at :3:81
at t (sentry.0806da5664eb9fbf3615.js:1:6757)
at new SnippetApi (:3:47)
at :225:21
ptb 269561 (2b2b368) Host 1.0.1057 x64 (44185) Windows 10 64-bit (10.0.19045)