Telegram App Creator

自动化创建 Telegram 应用程序

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         Telegram App Creator
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  自动化创建 Telegram 应用程序
// @author       HgTRojan
// @match        https://my.telegram.org/apps
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    // 配置变量
    const appTitle = 'Your App Title';
    const appShortname = 'YourShortName';
    const appUrl = 'https://yourapp.example.com';
    const appDescription = 'Your app description';
    const repetitions = 3000; // 重复次数

    // 等待函数
    const waitForSelector = (selector, timeout = 5000) => {
        return new Promise((resolve, reject) => {
            const interval = 100;
            let elapsed = 0;
            const checkExist = setInterval(() => {
                if (document.querySelector(selector)) {
                    clearInterval(checkExist);
                    resolve();
                }
                elapsed += interval;
                if (elapsed >= timeout) {
                    clearInterval(checkExist);
                    reject(`Timeout waiting for selector: ${selector}`);
                }
            }, interval);
        });
    };

    // 表单填写和提交函数
    const createApp = async () => {
        try {
            await waitForSelector('#app_title');
            document.querySelector('#app_title').click();
            document.querySelector('#app_title').value = appTitle;

            await waitForSelector('#app_shortname');
            document.querySelector('#app_shortname').click();
            document.querySelector('#app_shortname').value = appShortname;

            await waitForSelector('#app_url');
            document.querySelector('#app_url').click();
            document.querySelector('#app_url').value = appUrl;

            await waitForSelector('div:nth-of-type(4) div:nth-of-type(6)');
            document.querySelector('div:nth-of-type(4) div:nth-of-type(6)').click();

            await waitForSelector('div:nth-of-type(6) > label');
            document.querySelector('div:nth-of-type(6) > label').click();

            await waitForSelector('#app_desc');
            document.querySelector('#app_desc').click();
            document.querySelector('#app_desc').value = appDescription;

            await waitForSelector('#app_save_btn');
            document.querySelector('#app_save_btn').click();

            console.log('Application created successfully.');
        } catch (error) {
            console.error('Error creating application:', error);
        }
    };

    // 主函数
    const main = async () => {
        for (let i = 0; i < repetitions; i++) {
            console.log(`Creating application ${i + 1}...`);
            await createApp();
        }
    };

    // 执行主函数
    main();
})();