Перейти к содержанию
  • Язык

Oleg Aprel

Генсек
  • В составе

  • Посещение

  • Страна

Весь контент Oleg Aprel

  1. Oleg Aprel опубликовал(а) тема в Программы
    iMe Premium iMe Premium — мод на официальный клиент iMe Direct с официального сайта iMe. Альтернативный клиент Telegram. Есть распознавание голосовых сообщений (без покупки Premium подписки), пункт «Музыка» прямо в меню, самая лучшая сортировка чатов (среди всех клиентов Telegram), удобные настройки для администраторов, различные ИИ-помощники, анализаторы чатов, установка паролей на чаты. Модификация предоставляет все возможности для любителей по настоящему правильных клиентов. Получена локальная подписка Telegram Premium и iMe Premium. Вшито сохранение удалённых сообщений. Открыта возможность скачивать любой контент и снимать скриншоты в каналах и чатах где есть запрет на копирование. Анонимный просмотр историй и многое другое. iMe Messenger — такой же мод на официальный клиент iMe, но с Google Play (ограниченный - больше не обновляем). Сводка Добавил Oleg Aprel Добавлено 03/13/26 Категория Программы Просмотр файла
  2. Удаляешь полностью всех участников из комнаты, после чего сам её покидаешь. Комната попадёт в архив, а через неделю полностью исчезнет. https://doc.matrix.tu-dresden.de/en/rooms/delete
  3. А простыми словами: Что это значит? Это значит что его исходный код открыт, любой может поднять у себе сервер дома, в отличии от Telegram, где исходный код сервера закрыт. В чём отличия от Telegram? Самое главное пожалуй отличие, есть то что для регистрации в Matrix сети не нужно вводить почту или номер телефона, достаточно логина и пароля, и также любой желающий может запустить на своём старом ноутбуке сервер, и не беспокоится о своих данных. 100% уверенность. Так же Matrix зашифровывает все сообщения (кроме комнат где массовое скопление пользователей, так как это не имеет смысла) в своей сети, что вызывает небольшие задержки (~1 сек.) для отправки сообщения, но позволяет максимально безопасно доставить ваши пакеты. Telegram также зашифровывает сообщения, но исключительно в так называемых "Секретных чатах". Как работает Matrix сеть? Matrix определяет API-интерфейсы для синхронизации расширяемых объектов JSON, известных как «события», между совместимыми клиентами, серверами и службами. Каждый домашний сервер хранит историю связи и информацию об учетных записях для всех своих клиентов и обменивается данными с более широкой экосистемой Matrix, синхронизируя историю связи с другими домашними серверами и их клиентами. Клиенты обычно общаются друг с другом, отправляя события в контексте виртуальной «комнаты». Данные комнаты реплицируются на всех домашних серверах, пользователи которых участвуют в данной комнате. Таким образом, ни один домашний сервер не может контролировать или владеть данной комнатой. Домашние серверы моделируют историю связи в виде частично упорядоченного графа событий, известного как «граф событий» комнаты, который синхронизируется с конечной согласованностью между участвующие серверы, использующие «сервер-серверный API». Этот процесс синхронизации общей истории разговоров между домашними серверами, управляемыми разными сторонами, называется «федерацией». Matrix оптимизируется для свойств доступности и разделения теоремы CAP за счёт согласованности. Например, чтобы клиент A отправил сообщение клиенту B, клиент A выполняет HTTP PUT требуемого события JSON на своём домашнем сервере (HS) с помощью клиент-серверного API. HS добавляет это событие к своей копии графа событий комнаты, подписывая сообщение в контексте графа для целостности. Затем HS A реплицирует сообщение в HS B, выполняя HTTP PUT с использованием сервер-серверного API. HS проверяет подлинность запроса, проверяет подпись события, авторизует содержимое события и затем добавляет его в свою копию графа событий комнаты. Затем клиент B получает сообщение от своего домашнего сервера через долгоживущий запрос GET. Matrix работает только на домашних серверах? Нет! У этой сети есть свой сервер, к которому может присоединится любой желающий. Снижает ли использование глобального сервера мою безопасность? Нет! Все сообщения абсолютно также передаются в зашифрованном виде. А что с клиент приложениями? Клиент приложение, может создать любой желающий, так как его исходный код также полностью открыт. На данный момент самый лучший и надёжный клиент это Element, Element X. Их форки - SchildiChat и SchildiNext Chat. Его можно подключить к любому серверу, как домашнему так и стандартному matrix.org, также есть веб версия. https://matrix.to/#/#aprelteam:matrix.org
  4. @santalola Сейчас доступ выдаётся автоматически (сразу после регистрации). Просить доступ не требуется.
  5. Мир! Труд! Мяу! С праздником, товарищи!
  6. Oleg Aprel опубликовал(а) событие в Календарь

  7. @Madness У всех доступ одинаковый.
  8. @Kowtochka Сейчас доступ выдаётся автоматически (временно - сразу после регистрации). Просить доступ не требуется.
  9. Aprel Kino v2.0.0 для Desktop (Windows + Linux) Пост обновляемый!!! Re — специальная версия Aprel Kino для тех, кто с ReYohoho. Управление Показать меню вверху — ALT Полноэкранный режим — F11 Перезапустить приложение — CTRL + Shift + R Перезагрузить страницу — CTRL + R Закрыть приложение — CTRL + Q Уменьшение масштаба — CTRL + - Увеличение масштаба — CTRL + + Сброс масштаба — CTRL + O Дополнительная сводка Portable не требует установки (можно запускать прямо из папки), не пишет в реестр, не создаёт ярлыки, не требует прав администратора. Идеальна для запуска с флешки. Новые корректировки Добавлена опция включения локальной фильтрации и пункт в меню для обновления списка фильтров. Это значительно ускорит запуск приложения. Постоянное обновление не обязательно, но если вдруг появится реклама, можно вручную обновить локальную фильтрацию через меню. Локальный файл обновится до актуальной версии — при условии, что я обновлю список; при проблемах отметьте меня @aprelkun в любом нашем чате или напишите на форум. Добавлено меню для выбора блокировки рекламы, включая её отключение. Старая фильтрация (поможет только с некоторым контентом), по умолчанию установлен постоянно обновляемый фильтр Vivaldi ☭ Opera, помимо этого добавлена собственная фильтрация - Aprel Team. Полная оптимизация и переработка установщика под 64-битные системы, внесены изменения и в 32-битный установщик. Добавлен прокси (тест). Старые корректировки Интегрированы фильтры для блокировки рекламы в плеерах. После установки и при запуске приложение будет свёрнуто в трее на несколько секунд, после чего само откроется. Это сделано, чтобы вам было приятнее и для того, чтобы блокировщик включился и проверил всю фильтрацию на актуальность. Займёт это примерно 5 секунд - в зависимости от интернета. Добавлена возможность скачивать обновления напрямую из приложения, ссылка для загрузки динамическая. Во время загрузки на фоне тихо будет играть музыка. Интеграция с активностью в Discord: кнопка «Смотреть» динамическая. Вы сможете посмотреть то, что смотрят другие граждане, прямо из Discord. Исправлен скрипт установщика: новые версии теперь устанавливаются поверх предыдущих, заменяя и очищая старые данные. Добавлена возможность предотвратить сворачивание приложения в трей при его закрытии. Иконка в трее кликабельна, одно нажатие открывает приложение, повторное - скрывает. Встроено автоматическое определение архитектуры устройства для обновлений. Добавлено оповещение об обновлениях с возможностью отключения. Добавлена возможность отключить звук при запуске приложения. Добавлены дополнительные звуки при запуске приложения. Добавлена кнопка «Донос» (для багов и идей). Встроен инструмент для очистки кэша. Добавлен пункт «О приложении». Загрузить MEGA Re v2.0.0 Re v2.0.0 (Portable) v2.0.0 (x64) v2.0.0 (x86) ☭ СберДиск Re v2.0.0 Re v2.0.0 (Portable) v2.0.0 (x64) v2.0.0 (x86) ☭ Яндекс Диск Re v2.0.0 Re v2.0.0 (Portable) v2.0.0 (x64) v2.0.0 (x86) ☭ Proton Drive Re v2.0.0 Re v2.0.0 (Portable) v2.0.0 (x64) v2.0.0 (x86) ☭ Element </> Matrix Re v2.0.0 Re v2.0.0 (Portable) v2.0.0 (x64) v2.0.0 (x86) ☭ Discord Re v2.0.0 Re v2.0.0 (Portable) v2.0.0 (x64) v2.0.0 (x86) ☭ Telegram Re v2.0.0 Re v2.0.0 (Portable) v2.0.0 (x64) v2.0.0 (x86) v2.0.0 (x64) | Portable v2.0.0 (x86) | Portable Прошлые версии
  10. 1. EasyList: https://easylist.to/easylist/easylist.txt 2. EasyPrivacy: https://easylist.to/easylist/easyprivacy.txt
  11. Oleg Aprel ответил Oleg Aprel тему в Программы
    @Mike Пока что их нет.
  12. @zephyrus81 Сейчас доступ выдаётся автоматически (временно - сразу после регистрации).
  13. Проверено на Arch Linux, Manjaro KDE, а также на Garuda KGE Gaming. Официальное приложение Discord Desktop. 1. Если вы из РФ, то включите любой ОВЕ для обхода. Можете использовать наш сервер: https://discord.aprelteam.by. 2. Примите квест в разделе «Задания». 3. Нажмите Ctrl+Shift+I, чтобы открыть Инструменты разработчика (в приложении Discord). Если не работает, то: На Windows: откройте проводник и введите %appdata%/discord/settings.json. На Linux: файл находится по пути ~/.config/discord/settings.json. Добавьте следующую строку в JSON (не забудьте вставить запятую в конце предыдущей строки, если это необходимо): "DANGEROUS_ENABLE_DEVTOOLS_ONLY_ENABLE_IF_YOU_KNOW_WHAT_YOURE_DOING": true Закройте Discord (используйте "Выйти" из трея, чтобы полностью его закрыть). Сохраните изменения в файле и снова запустите Discord. 4. Перейдите на вкладку Консоль (Console). 5. Скопируйте код ниже и вставьте туда же: console.warn("%c[ВНИМАНИЕ]", "color: red; font-weight: bold; font-size: 16px;", "Вы запускаете скрипт от Aprel Team."); console.warn("Это может привести к блокировке вашего аккаунта. Используйте на свой страх и риск."); console.warn("Скрипт может перестать работать при обновлении Discord."); console.warn("----------------------------------------"); const ENCODED_KEY = "QXByZWwgVGVhbQ=="; async function verifyLocalProtection() { console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Инициализация системы защиты..."); await new Promise(resolve => setTimeout(resolve, 800)); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Проверка целостности кода..."); await new Promise(resolve => setTimeout(resolve, 600)); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Дешифровка внутреннего ключа..."); try { const decodedKey = atob(ENCODED_KEY); await new Promise(resolve => setTimeout(resolve, 500)); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Сравнение ключей..."); if (decodedKey === "Aprel Team") { console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "✓ Ключ APRELTEAM подтверждён"); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "✓ Целостность кода не нарушена"); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "✓ Доступ разрешён"); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "=== Aprel Team System Ready ==="); return true; } else { console.error("%c[Aprel Team]", "color: red; font-weight: bold;", "✗ Ошибка: ключ не совпадает"); console.error("%c[Aprel Team]", "color: red; font-weight: bold;", "✗ Оригинальный код ищите у Aprel Team"); console.error("%c[Aprel Team]", "color: red; font-weight: bold;", "✗ В коде изменено слово 'Aprel Team'"); console.error("%c[Aprel Team]", "color: red; font-weight: bold;", "✗ Base64 проверка не пройдена"); return false; } } catch (e) { console.error("%c[Aprel Team]", "color: red; font-weight: bold;", "✗ Ошибка дешифровки:", e.message); console.error("%c[Aprel Team]", "color: red; font-weight: bold;", "✗ Оригинальный код ищите у Aprel Team"); console.error("%c[Aprel Team]", "color: red; font-weight: bold;", "✗ В коде нарушена структура"); return false; } } delete window.$; let wpRequire = webpackChunkdiscord_app.push([[Symbol()], {}, r => r]); webpackChunkdiscord_app.pop(); let ApplicationStreamingStore = Object.values(wpRequire.c).find(x => x?.exports?.A?.__proto__?.getStreamerActiveStreamMetadata)?.exports?.A; let RunningGameStore = Object.values(wpRequire.c).find(x => x?.exports?.Ay?.getRunningGames)?.exports?.Ay; let QuestsStore = Object.values(wpRequire.c).find(x => x?.exports?.A?.__proto__?.getQuest)?.exports?.A; let ChannelStore = Object.values(wpRequire.c).find(x => x?.exports?.A?.__proto__?.getAllThreadsForParent)?.exports?.A; let GuildChannelStore = Object.values(wpRequire.c).find(x => x?.exports?.Ay?.getSFWDefaultChannel)?.exports?.Ay; let FluxDispatcher = Object.values(wpRequire.c).find(x => x?.exports?.h?.__proto__?.flushWaitQueue)?.exports?.h; let api = Object.values(wpRequire.c).find(x => x?.exports?.Bo?.get)?.exports?.Bo; if (!ApplicationStreamingStore || !RunningGameStore || !QuestsStore || !ChannelStore || !GuildChannelStore || !FluxDispatcher || !api) { console.error("%c[ОШИБКА]", "color: red; font-weight: bold;", "Не удалось найти необходимые модули Discord. Возможно, версия клиента изменилась."); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Скрипт от Aprel Team"); throw new Error("Модули не найдены"); } const supportedTasks = ["WATCH_VIDEO", "PLAY_ON_DESKTOP", "STREAM_ON_DESKTOP", "PLAY_ACTIVITY", "WATCH_VIDEO_ON_MOBILE"]; let quests = [...QuestsStore.quests.values()].filter(x => x.userStatus?.enrolledAt && !x.userStatus?.completedAt && new Date(x.config.expiresAt).getTime() > Date.now() && supportedTasks.find(y => Object.keys((x.config.taskConfig ?? x.config.taskConfigV2).tasks).includes(y)) ); let isApp = typeof DiscordNative !== "undefined"; if (quests.length === 0) { console.log("%c[Инфо]", "color: cyan;", "У вас нет незавершённых квестов!"); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Скрипт от Aprel Team"); } else { console.log(`%c[Инфо] Найдено квестов: ${quests.length}`, "color: cyan;"); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Скрипт от Aprel Team"); const randomDelay = (minMs, maxMs) => new Promise(resolve => setTimeout(resolve, Math.floor(Math.random() * (maxMs - minMs + 1)) + minMs)); let completedCount = 0; const COOLDOWN_AFTER = 4; let doJob = async function() { const quest = quests.pop(); if (!quest) { console.log("%c[Готово]", "color: green;", "Все квесты обработаны!"); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Aprel Team - Завершено"); return; } const pid = Math.floor(Math.random() * 30000) + 1000; const applicationId = quest.config.application?.id ?? (() => { const tc = quest.config.taskConfig ?? quest.config.taskConfigV2; const tn = supportedTasks.find(x => tc.tasks[x] != null); return tc.tasks[tn]?.applications?.[0]?.id; })(); const applicationName = quest.config.application?.name ?? "Unknown"; const questName = quest.config.messages.questName; const taskConfig = quest.config.taskConfig ?? quest.config.taskConfigV2; const taskName = supportedTasks.find(x => taskConfig.tasks[x] != null); const taskData = taskConfig.tasks[taskName]; const secondsNeeded = taskData.target; let secondsDone = quest.userStatus?.progress?.[taskName]?.value ?? 0; console.log(`%c[Старт] Квест: ${questName} (${taskName})`, "color: yellow; font-weight: bold;"); console.log(`%c[Старт] Требуется времени: ${secondsNeeded} сек., уже пройдено: ${secondsDone} сек.`, "color: gray;"); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", `Задача #${completedCount + 1} от Aprel Team`); if (taskName === "WATCH_VIDEO" || taskName === "WATCH_VIDEO_ON_MOBILE") { const speed = 7; const enrolledAt = new Date(quest.userStatus.enrolledAt).getTime(); let completed = false; console.log(`%c[Видео] Имитация просмотра видео для "${questName}".`, "color: magenta;"); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Video module active - Aprel Team"); let fn = async () => { while(true) { const remaining = Math.min(speed, secondsNeeded - secondsDone); await randomDelay(100, 500); await new Promise(resolve => setTimeout(resolve, remaining * 1000)); const timestamp = secondsDone + speed; try { const res = await api.post({url: `/quests/${quest.id}/video-progress`, body: {timestamp: Math.min(secondsNeeded, timestamp + Math.random())}}); completed = res.body.completed_at != null; secondsDone = Math.min(secondsNeeded, timestamp); if (timestamp >= secondsNeeded) { break; } await randomDelay(2000, 5000); } catch (e) { console.error("Ошибка при отправке прогресса видео:", e); break; } } if (!completed) { try { await api.post({url: `/quests/${quest.id}/video-progress`, body: {timestamp: secondsNeeded}}); } catch (e) { console.error("Ошибка финализации видео:", e); } } console.log("%c[Готово] Квест завершён!", "color: green; font-weight: bold;"); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Video completed - APRELTEAM verified"); completedCount++; if (completedCount % COOLDOWN_AFTER === 0) { console.log("%c[Aprel Team]", "color: yellow; font-weight: bold;", `Выполнено ${COOLDOWN_AFTER} заданий. Пауза 1 минута...`); await new Promise(resolve => setTimeout(resolve, 60000)); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Пауза завершена. Продолжаем..."); } await randomDelay(3000, 8000); doJob(); } fn(); } else if (taskName === "PLAY_ON_DESKTOP") { if (!isApp) { console.log("%c[Ошибка]", "color: red;", "Это больше не работает в браузере для не-видео квестов! Используйте десктопное приложение Discord для выполнения квеста", questName); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Browser not supported - Aprel Team"); doJob(); } else { try { const res = await api.get({url: `/applications/public?application_ids=${applicationId}`}); const appData = res.body[0]; const exeName = appData.executables?.find(x => x.os === "win32")?.name?.replace(">","") ?? appData.name.replace(/[\/\\:*?"<>|]/g, ""); 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}); console.log(`%c[Игра] Подделка игры "${appData.name}". Ждите ${Math.ceil((secondsNeeded - secondsDone) / 60)} минут.`, "color: cyan;"); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Game spoofing - Aprel Team active"); let fn = data => { let progress = quest.config.configVersion === 1 ? data.userStatus.streamProgressSeconds : Math.floor(data.userStatus.progress.PLAY_ON_DESKTOP.value); console.log(`%c[Прогресс] Прогресс квеста: ${progress}/${secondsNeeded}`, "color: gray;"); if (progress >= secondsNeeded) { console.log("%c[Готово] Квест завершён!", "color: green; font-weight: bold;"); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Game completed - APRELTEAM verified"); completedCount++; if (completedCount % COOLDOWN_AFTER === 0) { console.log("%c[Aprel Team]", "color: yellow; font-weight: bold;", `Выполнено ${COOLDOWN_AFTER} заданий. Пауза 1 минута...`); setTimeout(() => { console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Пауза завершена. Продолжаем..."); RunningGameStore.getRunningGames = realGetRunningGames; RunningGameStore.getGameForPID = realGetGameForPID; FluxDispatcher.dispatch({type: "RUNNING_GAMES_CHANGE", removed: [fakeGame], added: [], games: []}); FluxDispatcher.unsubscribe("QUESTS_SEND_HEARTBEAT_SUCCESS", fn); doJob(); }, 60000); } else { RunningGameStore.getRunningGames = realGetRunningGames; RunningGameStore.getGameForPID = realGetGameForPID; FluxDispatcher.dispatch({type: "RUNNING_GAMES_CHANGE", removed: [fakeGame], added: [], games: []}); FluxDispatcher.unsubscribe("QUESTS_SEND_HEARTBEAT_SUCCESS", fn); setTimeout(doJob, 5000); } } }; FluxDispatcher.subscribe("QUESTS_SEND_HEARTBEAT_SUCCESS", fn); } catch (e) { console.error("Ошибка при подделке игры:", e); doJob(); } } } else if (taskName === "STREAM_ON_DESKTOP") { if (!isApp) { console.log("%c[Ошибка]", "color: red;", "Это больше не работает в браузере для не-видео квестов! Используйте десктопное приложение Discord для выполнения квеста", questName); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Browser not supported - Aprel Team"); doJob(); } else { let realFunc = ApplicationStreamingStore.getStreamerActiveStreamMetadata; ApplicationStreamingStore.getStreamerActiveStreamMetadata = () => ({ id: applicationId, pid, sourceName: null }); console.log(`%c[Стрим] Подделка стрима "${applicationName}". Стримьте любое окно в голосовом канале ${Math.ceil((secondsNeeded - secondsDone) / 60)} минут.`, "color: cyan;"); console.log("%c[Важно]", "color: orange;", "Помните: в голосовом канале должен быть хотя бы 1 другой человек!"); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Stream mode - Aprel Team active"); let fn = data => { let progress = quest.config.configVersion === 1 ? data.userStatus.streamProgressSeconds : Math.floor(data.userStatus.progress.STREAM_ON_DESKTOP.value); console.log(`%c[Прогресс] Прогресс квеста: ${progress}/${secondsNeeded}`, "color: gray;"); if (progress >= secondsNeeded) { console.log("%c[Готово] Квест завершён!", "color: green; font-weight: bold;"); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Stream completed - APRELTEAM verified"); completedCount++; if (completedCount % COOLDOWN_AFTER === 0) { console.log("%c[Aprel Team]", "color: yellow; font-weight: bold;", `Выполнено ${COOLDOWN_AFTER} заданий. Пауза 1 минута...`); setTimeout(() => { console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Пауза завершена. Продолжаем..."); ApplicationStreamingStore.getStreamerActiveStreamMetadata = realFunc; FluxDispatcher.unsubscribe("QUESTS_SEND_HEARTBEAT_SUCCESS", fn); doJob(); }, 60000); } else { ApplicationStreamingStore.getStreamerActiveStreamMetadata = realFunc; FluxDispatcher.unsubscribe("QUESTS_SEND_HEARTBEAT_SUCCESS", fn); setTimeout(doJob, 5000); } } }; FluxDispatcher.subscribe("QUESTS_SEND_HEARTBEAT_SUCCESS", fn); } } else if (taskName === "PLAY_ACTIVITY") { const channelId = ChannelStore.getSortedPrivateChannels()[0]?.id ?? Object.values(GuildChannelStore.getAllGuilds()).find(x => x != null && x.VOCAL.length > 0)?.VOCAL[0]?.channel.id; if (!channelId) { console.error("%c[Ошибка]", "color: red;", "Не удалось найти канал для активности. Создайте личный канал или присоединитесь к голосовому."); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Activity error - Aprel Team"); doJob(); return; } const streamKey = `call:${channelId}:1`; console.log(`%c[Активность] Выполнение квеста "${questName}" - ${quest.config.messages.questName}`, "color: magenta;"); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Activity task - Aprel Team active"); let fn = async () => { while(true) { try { const res = await api.post({url: `/quests/${quest.id}/heartbeat`, body: {stream_key: streamKey, terminal: false}}); const progress = res.body.progress.PLAY_ACTIVITY.value; console.log(`%c[Прогресс] Прогресс квеста: ${progress}/${secondsNeeded}`, "color: gray;"); await randomDelay(18000, 22000); if (progress >= secondsNeeded) { await api.post({url: `/quests/${quest.id}/heartbeat`, body: {stream_key: streamKey, terminal: true}}); break; } } catch (e) { console.error("Ошибка при обновлении активности:", e); break; } } console.log("%c[Готово] Квест завершён!", "color: green; font-weight: bold;"); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Activity completed - APRELTEAM verified"); completedCount++; if (completedCount % COOLDOWN_AFTER === 0) { console.log("%c[Aprel Team]", "color: yellow; font-weight: bold;", `Выполнено ${COOLDOWN_AFTER} заданий. Пауза 1 минута...`); await new Promise(resolve => setTimeout(resolve, 60000)); console.log("%c[Aprel Team]", "color: #00ff00; font-weight: bold;", "Пауза завершена. Продолжаем..."); } await randomDelay(3000, 8000); doJob(); }; fn(); } }; verifyLocalProtection().then(async (verified) => { if (verified) { doJob(); } else { console.error("%c[Aprel Team]", "color: red; font-weight: bold;", "=== Доступ запрещён ==="); console.error("%c[Aprel Team]", "color: red; font-weight: bold;", "=== Оригинальный код ищите у Aprel Team ==="); console.error("%c[Aprel Team]", "color: red; font-weight: bold;", "=== В коде изменено слово 'Aprel Team' ==="); } }); }6. Если не вставляется код, то впишите в консоль allow pasting. 7. Теперь вы можете забрать награду в «Заданиях».
  14. Путь тем: C:\Users\ИМЯ ПОЛЬЗОВАТЕЛЯ\AppData\Roaming\Vencord. C:\Users\ИМЯ ПОЛЬЗОВАТЕЛЯ\AppData\Roaming\BetterDiscord\themes Загрузить тему: > https://forum.aprelteam.su/css/Spotify_Discord.theme.css Исходник: > https://forum.aprelteam.su/css/Spotify_Discord/css/source.css
  15. @Кассиль Сейчас доступ выдаётся автоматически (временно - сразу после регистрации).
  16. VK: https://vk.com/video-50109825_456240106 RuTube: https://rutube.ru/video/6dbe9492450a9d3e18e1ef1dc3b66e6e Устанавливаем расширение: Opera (https://addons.opera.com/ru/extensions/details/tampermonkey-beta) Vivaldi (https://chrome.google.com/webstore/detail/dhdgffkkebhmkfjojejmpbldmpobfkfo) Или Beta (https://chrome.google.com/webstore/detail/gcalenpjmijncebpfijmoaglllgpjagf) Устанавливаем скрипт в расширение: .JS (https://raw.githubusercontent.com/ilyhalight/voice-over-translation/master/vot.user.js). Открываем нужное видео и проверяем. Временные метки расставлены GPT ботами: https://t.me/aprelteambot | https://t.me/aprelkunbot | https://t.me/aprelcatbot | https://t.me/aprelchikbot
  17. @Vladimir Lomakin Скоро будет опубликовано прямо здесь и на канале в Telegram.
  18. РуТрекер (ОВЕ) — расширение для браузера Opera (Opera GX), позволяющее комфортно работать с ОВЕ. Opera + Opera GX MEGA Telegram Управление горячими клавишами доступно по направлению: opera://extensions/shortcuts.
  19. @freebestmusic Сейчас доступ выдаётся автоматически (временно - сразу после регистрации).
  20. Проверено. Работает. После ввода промокода появится это окно, вводим и потом в дальнейшем отказываемся от подписки. Возможно номер необязателен, главное VPN. Сработало через браузерное расширение Urban VPN: > https://www.urban-vpn.com Внимательнее будьте на этапе отключения подписки, так как ЯМа всё равно попытается её оставить, отключайте до конца (одного тапа недостаточно)!!! Отмена подписки: > https://plus.yandex.ru/action/lk?utm_source=spavka_plus_ru&utm_medium=unsubscribe
  21. Звукозаписи ВСоюзе — расширение для браузера Opera (Opera GX), позволяющее удобно прослушивать музыку ВКонтакте в любой вкладке, не открывая сам сайт VK. Бесплатно и без рекламы. Opera + Opera GX MEGA Telegram Управление горячими клавишами доступно по направлению: opera://extensions/shortcuts.
  22. @Alexander Сейчас доступ выдаётся автоматически (временно - сразу после регистрации).
  23. Временное решение (Snaptube VIP): https://forum.aprelteam.su/mur/snaptube-vip/?id=313

Последние посетители 0

  • Ни одного делегата форума не просматривает данную страницу
Иконка перчаток с несколькими звуками
Иконка перчаток

Досье

Навигация

Розыск

Розыск

Настройка push-извещений браузера

Chrome (Android)
  1. Нажми на значок замка рядом с адресной строкой.
  2. Нажми Разрешения → Извещения.
  3. Корректируй свои предпочтения.
Chrome (Desktop)
  1. Нажми на значок замка в адресной строке.
  2. Выбери Управление сайта.
  3. Разыщи Изввещения и корректируй свои предпочтения.