您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
A super simple hack script that automatically clicks the start button of the Telegram mini app! Let's enjoy it little by little!
Вот исправленный скрипт с некоторыми пояснениями:
JavaScript
// ==UserScript==
// @name Telegram-mini-app-start
// @name:ja テレグラムミニアプリ自動スタート
// @match https://web.telegram.org/*
// @namespace https://blog.nyanco.me/telegram-mini-app-play-btn-auto-click/
// @version 1.1 // Увеличена версия, чтобы отметить изменение
// @description A super simple hack script that automatically clicks the start button of the Telegram mini app! Let's enjoy it little by little!
// @description:ja テレグラムのミニアプリのスタートボタンを自動クリックする超シンプルなハックスクリプト!少しずつ楽しよう!
// @author Nikutama(https://x.com/MeatBallCat2929)
// @grant none
// @run-at document-idle // Лучше использовать document-idle для гарантии полной загрузки
// @license MIT
// @downloadURL https://update.gf.qytechs.cn/scripts/517436/Telegram-mini-app-start.user.js
// @updateURL https://update.gf.qytechs.cn/scripts/517436/Telegram-mini-app-start.meta.js
// ==/UserScript==
(function() {
'use strict';
// Функция для поиска и клика по кнопке
function clickTelegramMiniAppButton() {
// Ищем элемент кнопки, который запускает мини-приложение.
// Класс 'new-message-bot-commands' обычно относится к командам бота в поле ввода,
// а не к кнопке "Start" или "Open App".
// Мы будем использовать более общий подход с текстом кнопки.
// Ищем кнопку по тексту "Open App" (или аналогичному, если он меняется).
// Можно также искать по более специфическим классам, если таковые появятся.
const potentialButtons = document.querySelectorAll('button, div[role="button"]');
let foundButton = null;
for (const button of potentialButtons) {
// Проверяем текст кнопки на наличие ключевых слов
const buttonText = button.textContent.trim();
if (buttonText.includes('Open App') || buttonText.includes('Start') || buttonText.includes('Играть') || buttonText.includes('Launch')) {
// Дополнительная проверка, чтобы убедиться, что это действительно кнопка запуска мини-приложения
// Например, ищем родителя с классом, указывающим на мини-приложение, или URL в кнопке
// Это может потребовать более глубокого анализа DOM Telegram Mini App.
// Пока что, полагаемся на текст и общие элементы.
foundButton = button;
break;
}
}
if (foundButton) {
console.log('Telegram mini-app start button found. Clicking it!', foundButton);
foundButton.click();
// Можно добавить clearInterval, если кнопка должна быть нажата только один раз
// clearInterval(intervalId);
} else {
console.log('Telegram mini-app start button not found yet. Retrying...');
}
}
// Вместо window.addEventListener('load') и setTimeout,
// лучше использовать MutationObserver для отслеживания появления элемента,
// или setInterval для периодической проверки.
// 'document-idle' в @run-at также полезен.
// Периодически проверяем наличие кнопки
// Установим интервал для повторных попыток, так как кнопка может загружаться динамически.
const intervalId = setInterval(clickTelegramMiniAppButton, 1000); // Проверяем каждую секунду
// Остановка интервала после определенного времени, чтобы избежать бесконечной работы,
// если кнопка так и не появится.
setTimeout(() => {
clearInterval(intervalId);
console.log('Stopped checking for Telegram mini-app start button after 30 seconds.');
}, 30000); // Остановить через 30 секунд
})();
Основные изменения и объяснения:
@version 1.1: Увеличил номер версии, чтобы отметить, что скрипт был изменен.
@run-at document-idle: Это более подходящее значение, чем document-end для Greasemonkey/Tampermonkey скриптов, когда вам нужно, чтобы DOM был полностью готов и ресурсы загружены. Это гарантирует, что скрипт будет выполнен, когда страница находится в состоянии "бездействия" после полной загрузки.
Улучшенная логика поиска кнопки:
Исходный XPath //div[contains(@class, 'new-message-bot-commands')] скорее всего не находит кнопку "Start" или "Open App" для мини-приложений. Этот класс обычно относится к элементам, связанным с командами бота, которые отображаются в поле ввода сообщения.
Я изменил поиск на document.querySelectorAll('button, div[role="button"]') и затем итерацию по этим элементам для поиска по текстовому содержимому (button.textContent.includes('Open App'), button.textContent.includes('Start'), button.textContent.includes('Играть'), button.textContent.includes('Launch')). Это более надежный подход, так как текст кнопок "Запустить" или "Открыть приложение" более стабилен, чем конкретные классы, которые могут меняться.
Я добавил несколько вариантов текста, которые могут быть на кнопке ("Open App", "Start", "Играть", "Launch"), чтобы увеличить вероятность обнаружения на разных локализациях или в разных мини-приложениях.
Использование setInterval и setTimeout:
Вместо window.addEventListener('load') в сочетании с одним setTimeout, я реализовал периодическую проверку с помощью setInterval. Это очень важно, потому что Telegram Web часто загружает контент динамически, и кнопка мини-приложения может появиться не сразу после полной загрузки страницы (load события).
Скрипт будет проверять наличие кнопки каждую секунду (1000 мс) в течение 30 секунд. Если кнопка найдена, она будет нажата. Если за 30 секунд кнопка не появится, интервал будет очищен, чтобы скрипт не работал бесконечно.
Консольные логи: Добавлены более информативные сообщения в консоли, чтобы помочь в отладке.
Как использовать этот исправленный скрипт:
Установите расширение для браузера: Вам понадобится расширение для управления пользовательскими скриптами, такое как Greasemonkey (для Firefox) или Tampermonkey (для Chrome, Opera, Edge, Safari).
Создайте новый скрипт: Откройте панель управления вашего расширения (Greasemonkey/Tampermonkey) и создайте новый пользовательский скрипт.
Вставьте код: Скопируйте и вставьте весь исправленный код, приведенный выше, в редактор скриптов.
Сохраните: Сохраните скрипт.
Теперь, когда вы зайдете на https://web.telegram.org/*, скрипт будет пытаться автоматически нажать кнопку "Open App" или "Start" для Telegram мини-приложений.
Если вы столкнетесь с тем, что кнопка все равно не нажимается, возможно, потребуется более точный селектор CSS или XPath для кнопки, которая запускает мини-приложение, так как Telegram часто обновляет свою структуру DOM. В таком случае, мне понадобится больше информации о конкретном мини-приложении и скриншот или HTML-код кнопки.
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址