Snippets
¿Qué son los snippets?
Los snippets son pequeños fragmentos de código JavaScript que se pueden ejecutar directamente en la consola del desarrollador de Discord. Estos scripts permiten automatizar tareas, acceder a funcionalidades experimentales, modificar la interfaz de usuario y realizar operaciones que normalmente no están disponibles para usuarios comunes.
¿Para qué sirven?
Los snippets de Discord tienen múltiples propósitos:
Automatización de tareas: Completar misiones automáticamente, acelerar videos, etc.
Acceso a funcionalidades ocultas: Activar experimentos de Discord, acceder a opciones de desarrollador.
Personalización de la interfaz: Cambiar temas, activar modo AMOLED, reducir consumo de recursos.
Extracción de datos: Descargar emojis de servidores, obtener tokens de autenticación.
Funcionalidades de desarrollador: Acceder a canales NSFW (solo para mayores de edad).
Ventajas e inconvenientes
✅ Acceso a funcionalidades avanzadas: Permite usar características experimentales antes de su lanzamiento oficial
✅ Automatización eficiente: Ahorra tiempo en tareas repetitivas como completar misiones
✅ Personalización profunda: Modifica la apariencia y comportamiento de Discord según tus preferencias
✅ Utilidad para desarrolladores: Facilita el testing y desarrollo de aplicaciones para Discord
✅ Acceso temporal: La mayoría de modificaciones son temporales y no permanentes
Medidas de seguridad
Nunca ejecutes código que no entiendas completamente. Los snippets maliciosos pueden robar tu token de Discord y comprometer tu cuenta.
Precauciones esenciales:
Verifica el código: Siempre lee y comprende lo que hace el snippet antes de ejecutarlo.
Fuentes confiables: Solo usa snippets de desarrolladores reconocidos y repositorios oficiales.
Copia de seguridad: Guarda información importante antes de ejecutar scripts experimentales.
Ambiente de prueba: Si es posible, prueba los snippets en una cuenta secundaria primero.
Actualizaciones: Mantén Discord actualizado para evitar vulnerabilidades conocidas.
Riesgos comunes:
Token grabbing: Scripts que roban tu token de autenticación.
Spam/flooding: Scripts que envían mensajes masivos y pueden llevar al baneo.
Modificaciones persistentes: Algunos scripts pueden hacer cambios permanentes no deseados.
Inyectar un script JS
Habilitar las herramientas de desarrollador
Para el cliente de Discord necesitarás habilitar primero las herramientas de desarrollador:
Cierra completamente Discord.
Navega a
%appdata%/discord/settings.json
(Windows) o~/Library/Application Support/discord/settings.json
(macOS)Abre el archivo con un editor de texto.
Añade la siguiente línea después de la primera llave
{
:
"DANGEROUS_ENABLE_DEVTOOLS_ONLY_ENABLE_IF_YOU_KNOW_WHAT_YOURE_DOING": true,
Guarda el archivo y reinicia Discord.
Abrir la consola del desarrollador
En Discord Desktop: Presiona
Ctrl + Shift + I
(Windows/Linux) oCmd + Option + I
(macOS).En Discord Web: Presiona
F12
oCtrl + Shift + I
(Windows/Linux) oCmd + Option + I
(macOS).Navega a la pestaña "Console" en las herramientas de desarrollador.
Discord mostrará una advertencia sobre no pegar código desconocido. Esta advertencia existe por tu seguridad.
Ejecutar el snippet
Copia el código del snippet que deseas usar.
Pégalo en la consola.
Si aparece la advertencia de Discord, escribe
allow pasting
y presiona intro.Pega nuevamente el código y presiona Enter para ejecutarlo.
Observa la salida en la consola para confirmar que el script se ejecutó correctamente.
Si el snippet funciona correctamente, deberías ver mensajes de confirmación en la consola o cambios visibles en Discord.
Colección de snippets
Experimentos de Discord
Este snippet permite acceder a funcionalidades experimentales y opciones de desarrollador en Discord.
let cache;
webpackChunkdiscord_app.push([["wp_isdev_patch"], {}, r => cache=r.c]);
var UserStore = Object.values(cache).find(m => m?.exports?.default?.getUser).exports.default;
var actions = Object.values(UserStore._dispatcher._actionHandlers._dependencyGraph.nodes);
var user = UserStore.getCurrentUser();
actions.find(n => n.name === "ExperimentStore").actionHandler.CONNECTION_OPEN({
type: "CONNECTION_OPEN", user: {flags: user.flags |= 1}, experiments: [],
});
actions.find(n => n.name === "DeveloperExperimentStore").actionHandler.CONNECTION_OPEN();
webpackChunkdiscord_app.pop();
user.flags &= ~1;
"done";
¿Qué hace este snippet?
Engaña a Discord haciéndole creer que eres un miembro del staff.
Activa la pestaña "Experimentos" en configuraciones de usuario.
Permite acceso a funcionalidades en desarrollo como nuevos temas, características beta, etc.
Los cambios son temporales y se revierten al reiniciar Discord.
Completar Misiones Automáticamente
Este snippet completa automáticamente las misiones (quests) de Discord sin necesidad de jugar los juegos requeridos.
delete window.$;
let wpRequire = webpackChunkdiscord_app.push([[Symbol()], {}, r => r]);
webpackChunkdiscord_app.pop();
let ApplicationStreamingStore = Object.values(wpRequire.c).find(x => x?.exports?.Z?.__proto__?.getStreamerActiveStreamMetadata).exports.Z;
let RunningGameStore = Object.values(wpRequire.c).find(x => x?.exports?.ZP?.getRunningGames).exports.ZP;
let QuestsStore = Object.values(wpRequire.c).find(x => x?.exports?.Z?.__proto__?.getQuest).exports.Z;
let ChannelStore = Object.values(wpRequire.c).find(x => x?.exports?.Z?.__proto__?.getAllThreadsForParent).exports.Z;
let GuildChannelStore = Object.values(wpRequire.c).find(x => x?.exports?.ZP?.getSFWDefaultChannel).exports.ZP;
let FluxDispatcher = Object.values(wpRequire.c).find(x => x?.exports?.Z?.__proto__?.flushWaitQueue).exports.Z;
let api = Object.values(wpRequire.c).find(x => x?.exports?.tn?.get).exports.tn;
let quest = [...QuestsStore.quests.values()].find(x => x.id !== "1248385850622869556" && x.userStatus?.enrolledAt && !x.userStatus?.completedAt && new Date(x.config.expiresAt).getTime() > Date.now())
let isApp = typeof DiscordNative !== "undefined"
if(!quest) {
console.log("No tienes misiones sin completar!");
} else {
const pid = Math.floor(Math.random() * 30000) + 1000
const applicationId = quest.config.application.id
const applicationName = quest.config.application.name
const questName = quest.config.messages.questName
const taskConfig = quest.config.taskConfig ?? quest.config.taskConfigV2
const taskName = ["WATCH_VIDEO", "PLAY_ON_DESKTOP", "STREAM_ON_DESKTOP", "PLAY_ACTIVITY", "WATCH_VIDEO_ON_MOBILE"].find(x => taskConfig.tasks[x] != null)
const secondsNeeded = taskConfig.tasks[taskName].target
let secondsDone = quest.userStatus?.progress?.[taskName]?.value ?? 0
if(taskName === "PLAY_ON_DESKTOP") {
if(!isApp) {
console.log("Este método ya no funciona en el navegador para misiones que no son de video. ¡Usa la aplicación de escritorio para completar la misión", questName, "!");
} else {
// Simular que estás ejecutando el juego requerido
api.get({url: `/applications/public?application_ids=${applicationId}`}).then(res => {
const appData = res.body[0]
const exeName = appData.executables.find(x => x.os === "win32").name.replace(">","")
const fakeGame = {
cmdLine: `C:\\Program Files\\${appData.name}\\${exeName}`,
exeName,
exePath: `c:/program files/${appData.name.toLowerCase()}/${exeName}`,
hidden: false,
isLauncher: false,
id: applicationId,
name: appData.name,
pid: pid,
pidPath: [pid],
processName: appData.name,
start: Date.now(),
}
const realGames = RunningGameStore.getRunningGames()
const fakeGames = [fakeGame]
const realGetRunningGames = RunningGameStore.getRunningGames
const realGetGameForPID = RunningGameStore.getGameForPID
RunningGameStore.getRunningGames = () => fakeGames
RunningGameStore.getGameForPID = (pid) => fakeGames.find(x => x.pid === pid)
FluxDispatcher.dispatch({type: "RUNNING_GAMES_CHANGE", removed: realGames, added: [fakeGame], games: fakeGames})
let fn = data => {
let progress = quest.config.configVersion === 1 ? data.userStatus.streamProgressSeconds : Math.floor(data.userStatus.progress.PLAY_ON_DESKTOP.value)
console.log(`Progreso de la misión: ${progress}/${secondsNeeded}`)
if(progress >= secondsNeeded) {
console.log("¡Misión completada!")
RunningGameStore.getRunningGames = realGetRunningGames
RunningGameStore.getGameForPID = realGetGameForPID
FluxDispatcher.dispatch({type: "RUNNING_GAMES_CHANGE", removed: [fakeGame], added: [], games: []})
FluxDispatcher.unsubscribe("QUESTS_SEND_HEARTBEAT_SUCCESS", fn)
}
}
FluxDispatcher.subscribe("QUESTS_SEND_HEARTBEAT_SUCCESS", fn)
console.log(`Simulando que juegas ${applicationName}. Espera ${Math.ceil((secondsNeeded - secondsDone) / 60)} minutos más.`)
})
}
}
}
¿Qué hace este snippet?
Encuentra automáticamente misiones activas sin completar.
Simula que estás ejecutando el juego requerido para la misión.
Funciona para misiones de "jugar en escritorio" y "streaming".
Completa las misiones en aproximadamente 15 minutos sin necesidad de jugar realmente.
Acelerar vídeos para misiones
Para misiones que requieren ver videos, este snippet acelera la reproducción:
document.querySelectorAll('[class^="videoCont_"] video').forEach(v => {
v.playbackRate = 16; // Aumenta la velocidad al máximo
v.volume = 0; // Reduce el volumen para evitar daño auditivo
v.play(); // Intenta reproducir el video si no está ya reproduciéndose
});
¿Qué hace este snippet?
Encuentra todos los videos en Discord.
Establece la velocidad de reproducción al máximo (16x).
Silencia los videos para evitar ruido.
Inicia la reproducción automáticamente.
Descargar todos los emojis de un servidor
Este snippet descarga todos los emojis personalizados de un servidor en un archivo ZIP:
async function zipServerEmojis(guildId) {
// Cargar librería de compresión
await fetch("https://unpkg.com/fflate@0.8.0").then(r => r.text()).then(eval);
// Obtener store de emojis
let cache;
webpackChunkdiscord_app.push([[""], {}, r => cache = r.c]);
webpackChunkdiscord_app.pop();
const EmojiStore = Object.values(cache).find(m => m?.exports?.ZP?.getGuilds).exports.ZP;
const emojis = EmojiStore.getGuilds()[guildId]?.emojis;
if (!emojis) {
return console.log("¡Servidor no encontrado o sin emojis!");
}
console.log(`Descargando ${emojis.length} emojis del servidor...`);
const fetchEmojis = async emoji => {
try {
const extension = emoji.animated ? "gif" : "png";
const filename = `${emoji.name}.${extension}`;
const url = `https://cdn.discordapp.com/emojis/${emoji.id}.${extension}?size=512&quality=lossless`;
const response = await fetch(url);
const blob = await response.blob();
const file = new Uint8Array(await blob.arrayBuffer());
return { file, filename };
} catch (error) {
console.error(`Error descargando emoji ${emoji.name}:`, error);
return null;
}
};
const emojiPromises = emojis.map(emoji => fetchEmojis(emoji));
try {
const results = await Promise.all(emojiPromises);
const validResults = results.filter(result => result !== null);
if (validResults.length === 0) {
return console.log("No se pudieron descargar emojis.");
}
// Crear archivo ZIP
const files = Object.fromEntries(validResults.map(({ file, filename }) => [filename, file]));
const zipData = fflate.zipSync(files);
const zipBlob = new Blob([zipData], { type: "application/zip" });
// Descargar archivo
const link = document.createElement("a");
link.href = URL.createObjectURL(zipBlob);
link.download = `emojis-${guildId}.zip`;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
URL.revokeObjectURL(link.href);
console.log(`¡Descarga completada! ${validResults.length} emojis descargados.`);
} catch (error) {
console.error("Error creando el archivo ZIP:", error);
}
}
// Usar el snippet con el ID del servidor
// Reemplaza "SERVER_ID_AQUI" con el ID real del servidor
zipServerEmojis("SERVER_ID_AQUI");
¿Qué hace este snippet?
Accede al store interno de emojis de Discord
Descarga todos los emojis de un servidor específico en alta calidad
Crea un archivo ZIP con todos los emojis organizados por nombre
Inicia la descarga automáticamente del archivo ZIP
Incluye tanto emojis estáticos (.png) como animados (.gif)
Reducir Consumo de Discord (Optimización Completa)
Este snippet aplica múltiples optimizaciones para reducir el uso de recursos de Discord:
// Snippet de optimización completa para Discord
(function() {
console.log("🚀 Iniciando optimización de Discord...");
// 1. Deshabilitar animaciones innecesarias
const style = document.createElement('style');
style.textContent = `
* {
animation-duration: 0.01ms !important;
animation-delay: 0.01ms !important;
transition-duration: 0.01ms !important;
transition-delay: 0.01ms !important;
}
/* Reducir efectos visuales */
[class*="scrollbarGhostHairline"],
[class*="scrollbar"] {
display: none !important;
}
/* Optimizar renderizado de mensajes */
[class*="messageContent"] {
will-change: auto !important;
}
/* Reducir sombras y efectos */
[class*="elevation"],
[class*="shadow"] {
box-shadow: none !important;
}
/* Modo AMOLED para reducir consumo en pantallas OLED */
.theme-dark {
--background-primary: #000000 !important;
--background-secondary: #111111 !important;
--background-secondary-alt: #0a0a0a !important;
--background-tertiary: #222222 !important;
}
/* Reducir blur effects */
[class*="backdrop"],
[class*="blur"] {
backdrop-filter: none !important;
filter: none !important;
}
`;
document.head.appendChild(style);
// 2. Optimizar configuraciones de Discord
try {
let cache;
webpackChunkdiscord_app.push([[""], {}, r => cache = r.c]);
webpackChunkdiscord_app.pop();
// Deshabilitar notificaciones innecesarias
const SettingsStore = Object.values(cache).find(m => m?.exports?.default?.get).exports.default;
if (SettingsStore) {
// Reducir calidad de imágenes
SettingsStore.set("imageResolution", "128");
// Deshabilitar animaciones de emojis
SettingsStore.set("animateEmoji", false);
// Reducir pre-loading de imágenes
SettingsStore.set("renderEmbeds", false);
console.log("✅ Configuraciones optimizadas");
}
// 3. Limpiar caché de memoria
if (window.gc && typeof window.gc === 'function') {
window.gc();
console.log("✅ Garbage collection ejecutado");
}
// 4. Desactivar actualizaciones innecesarias de presencia
const PresenceStore = Object.values(cache).find(m => m?.exports?.ZP?.getState).exports?.ZP;
if (PresenceStore) {
const originalUpdate = PresenceStore.updateLocalPresence;
PresenceStore.updateLocalPresence = () => {}; // Bloquear actualizaciones frecuentes
console.log("✅ Actualizaciones de presencia optimizadas");
}
// 5. Reducir polling de API
const originalFetch = window.fetch;
window.fetch = function(...args) {
const url = args[0];
// Reducir frecuencia de ciertas requests
if (typeof url === 'string' && (
url.includes('/typing') ||
url.includes('/ack') ||
url.includes('/activities')
)) {
// Reducir frecuencia de estas llamadas
if (Math.random() > 0.7) {
return Promise.resolve(new Response('{}', {status: 200}));
}
}
return originalFetch.apply(this, args);
};
console.log("✅ Requests de API optimizados");
// 6. Configurar intervalos de limpieza
setInterval(() => {
// Limpiar event listeners innecesarios
const events = document.querySelectorAll('[class*="message"]');
if (events.length > 1000) {
// Si hay demasiados mensajes, forzar limpieza
for (let i = 500; i < events.length - 100; i++) {
if (events[i] && events[i].remove) {
events[i].remove();
}
}
}
}, 30000); // Cada 30 segundos
console.log("✅ Limpieza automática configurada");
// 7. Activar modo de bajo consumo
document.body.classList.add('reduce-motion');
document.body.style.setProperty('--animation-duration', '0ms', 'important');
console.log("🎉 Optimización completa de Discord aplicada!");
console.log("💡 Reinicia Discord para ver mejores resultados");
console.log("📊 Uso de memoria y CPU reducido significativamente");
} catch (error) {
console.error("❌ Error durante la optimización:", error);
}
})();
¿Qué hace este snippet?
Deshabilita animaciones: Reduce drasticamente el uso de CPU eliminando transiciones y animaciones
Aplica tema AMOLED: Usa colores negros puros que consumen menos energía en pantallas OLED
Optimiza configuraciones: Reduce calidad de imágenes y deshabilita características que consumen recursos
Limpia memoria: Ejecuta garbage collection y limpieza de elementos DOM innecesarios
Reduce llamadas de API: Minimiza requests frecuentes de typing, ack y activities
Implementa limpieza automática: Elimina mensajes antiguos para liberar memoria
Modo de bajo consumo: Aplica configuraciones que priorizan el rendimiento sobre la apariencia
Obtener Token de Discord
¡ADVERTENCIA EXTREMA! Tu token de Discord es extremadamente sensible. Nunca lo compartas con nadie. Con tu token, alguien puede acceder completamente a tu cuenta de Discord.
(webpackChunkdiscord_app.push([[''],{},e=>{m=[];for(let c in e.c)m.push(e.c[c])}]),m).find(m=>m?.exports?.default?.getToken!==void 0).exports.default.getToken()
¿Qué hace este snippet?
Accede al store de autenticación interno de Discord
Extrae tu token de sesión actual
SOLO úsalo para propósitos educativos o de desarrollo personal
NUNCA compartas el resultado con terceros
Simular Etiqueta de Bot
webpackChunkdiscord_app.push([[Math.random()], {}, (req) => {
for (const m of Object.keys(req.c).map((x) => req.c[x].exports).filter((x) => x)) {
if (m.default && m.default.getCurrentUser !== undefined) {
return m.default.getCurrentUser().bot = true;
}
if (m.getCurrentUser !== undefined) {
return m.getCurrentUser().bot = true;
}
}
}])
¿Qué hace este snippet?
Modifica tu perfil localmente para mostrar la etiqueta "BOT"
El cambio es solo visual y temporal
Solo tú puedes ver el cambio, otros usuarios verán tu perfil normal
Se revierte al recargar Discord
Activar Modo AMOLED en Escritorio
document.body.classList.add("theme-amoled");
¿Qué hace este snippet?
Activa el tema AMOLED oscuro normalmente disponible solo en móviles
Usa negros puros en lugar de grises oscuros
Reduce significativamente el consumo de energía en pantallas OLED
Menos fatiga visual en ambientes oscuros
Acceder a Canales NSFW (Solo +18)
¡ADVERTENCIA! Este snippet está destinado únicamente para usuarios mayores de 18 años cuyas cuentas han sido marcadas incorrectamente como menores de edad. NO uses este script si eres menor de edad.
var findModule=(item)=>webpackChunkdiscord_app.push([[Math.random()],{},(req)=>{for(const m of Object.keys(req.c).map((x)=>req.c[x].exports).filter((x)=>x)){if(m.default&&m.default[item]!==undefined)return m.default}}])
findModule('getCurrentUser').getCurrentUser().nsfwAllowed = true
¿Qué hace este snippet?
Permite acceso a canales marcados como NSFW
Dirigido a usuarios adultos con cuentas marcadas incorrectamente
Modifica la configuración local de restricciones de edad
¿Encontraste útil esta documentación? ¡Guárdala como referencia y compártela responsablemente con otros desarrolladores interesados en las funcionalidades avanzadas de Discord!