NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Get Discord Server Members // @namespace DirtyCajunRice // @match https://discord.com/channels/* // @grant GM_log // @grant GM_registerMenuCommand // @version 1.0.3 // @author DirtyCajunRice // @description Gets all visible member IDs in a discord // @license MIT // @copyright 2021, dirtycajunrice (https://openuserjs.org/users/dirtycajunrice) // @run-at document-idle // @require https://cdn.jsdelivr.net/npm/@violentmonkey/shortcut@1 // @downloadURL https://openuserjs.org/install/dirtycajunrice/Get_Discord_Server_Members.user.js // @homepageURL https://openuserjs.org/scripts/dirtycajunrice/Get_Discord_Server_Members // ==/UserScript== const AvatarURLPrefix = "https://cdn.discordapp.com/avatars/" var GuildMembers = {}; var GuildMembersPane = {}; GM_registerMenuCommand("Get Member List", collect); VM.shortcut.register('c-s-q', collect); function collect() { let member_count = Object.keys(GuildMembers).length let added = 0 let avatars = Array.from(document.querySelectorAll("img[src^='" + AvatarURLPrefix + "']")).filter(item => !item.className.includes("clickable")) for (i of avatars) { try { let mid = i.src.split("/")[4] GuildMembers[mid] = i.parentElement.parentElement.parentElement.parentElement.getAttribute("aria-label").split(",")[0] } catch (e) { console.log(`Error Kind: ${e.name}`) console.log(`Message: ${e.message}`) console.log(`Location: ${e.fileName}:${e.lineNumber}:${e.columnNumber}`) console.log(`Stack Trace: ${e.stack}`) console.log(`Current Data:`) console.log(avatars) console.log(i) continue } } avatars[avatars.length-1].scrollIntoView() let new_member_count = Object.keys(GuildMembers).length added = new_member_count - member_count member_count = new_member_count if (added > 0) attempts = 0 GM_log(`Members - Added: ${added} | Total ${member_count}`) GM_log(GuildMembers) }