Загрузка...

Python кликер для создания чатов на официальном клиенте Telegram

Тема в разделе Python создана пользователем archi05 9 апр 2020. 622 просмотра

  1. archi05
    archi05 Автор темы 9 апр 2020 161 1 июл 2018
    Начнём с импорта зависимостей:

    Код
    import win32gui
    import pywinauto
    from pywinauto.application import Application
    from pywinauto.keyboard import send_keys
    from time import sleep
    import os
    import shutil
    from ctypes import *

    Из нестандартных тут pywinauto и win32gui. Можно установить лишь pywinauto, она сама установит win32gui и вам не придётся мучиться.

    Python
    pip install pywinauto
    Модуль ctypes нам нужен для более красивого вывода в консоль Windows (что совершенно не обязательно). Начнём с функции main:
    Python
    if __name__ == '__main__':
    os.system("COLOR 01")
    os.system("CLS")
    blue()
    print('How many chats to create?')
    green()
    data = input(">>> ")
    os.system("CLS")
    VA = os.listdir(path="VA")
    Сначала мы задаём цвет консоли, делаем его чёрным, затем очищаем её. После этого вызываем функцию blue(), которая окрашивает цвет вывода в синий и после вывода текста окрашиваем будущий текст, который введет пользователь, в зеленый. Сама функция изменения цвета в синий будет ниже, так же как и функции изменения цвета в зеленый и красный:
    Python
    def blue():
    h = windll.Kernel32.GetStdHandle(c_ulong(0xfffffff5))
    windll.Kernel32.SetConsoleTextAttribute(h, 3)

    def err():
    h = windll.Kernel32.GetStdHandle(c_ulong(0xfffffff5))
    windll.Kernel32.SetConsoleTextAttribute(h, 4)

    def green():
    h = windll.Kernel32.GetStdHandle(c_ulong(0xfffffff5))
    windll.Kernel32.SetConsoleTextAttribute(h, 10)
    [IMG]

    Затем мы добавляем в переменную "VA" папку 'VA' которая была создана заранее, в которую человек помещает аккаунты TData.

    Далее, всё в той же функции main мы добавляем пару циклов для работы с аккаунтами телеграм.
    Python
    for i in VA:
    shutil.copytree("VA\\" + i, "Telegram")
    shutil.copy('Telegram.exe', 'Telegram')
    app = Application(backend="uia").start('Telegram\\Telegram.exe')
    sleep(3)
    hwnd = win32gui.FindWindow(None, "Telegram")
    win32gui.MoveWindow(hwnd, 0, 0, 800, 800, True)
    for j in range(int(data)):
    create_chat()
    else:
    app.kill()
    green()
    print('Account ' + str(i) + ' completed work!')
    blue()
    sleep(1)
    shutil.rmtree("Telegram")
    sleep(1)
    else:
    green()
    print('Work completed!')
    blue()
    В переменной VA хранятся папки с файлами TData. Далее, используя модуль shutil, мы копируем первую папку из VA и помещаем в каталог Telegram, который будет при этом создан, после копируем сам exe'шник portable версии Telegram. Затем запускаем его из этой папки, ждем 3 секунды на всякий случай, ибо были и слабые машины, которые не запускают приложение достаточно быстро, хотя это можно было решить и по-другому (например добавлением функции 'visible', которая ждёт, пока приложение появится на экране). Затем с помощью win32gui мы получаем hwnd приложения телеграм, чтобы в дальнейшем переместить его на координаты 0, 0 и задать размеры 800, 800.

    Теперь запускаем цикл for, в который передаём значение переменной, введённой пользователем, она отвечает за количество создаваемых чатов и после передаёт управление функции create_chat(). Давайте рассмотрим функцию create_chat()
    Python
    def create_chat():
    pywinauto.mouse.click(button='left', coords=(25, 46))
    pywinauto.mouse.click(button='left', coords=(111, 195))
    send_keys('My Random chat', with_spaces=True)
    pywinauto.mouse.click(button='left', coords=(540, 468))
    pywinauto.mouse.click(button='left', coords=(274, 189))
    send_keys(random_user, with_spaces=True)
    sleep(2)
    pywinauto.mouse.click(button='left', coords=(345, 251))
    pywinauto.mouse.click(button='left', coords=(541, 686))
    Тут мы просто используем функции библиотеки pywinauto, которые делают клики мышью и управляют ею. Как можно было догадаться, в coords мы записываем координаты кликов. В send_keys(random_user, with_spaces=True) мы вписываем пользователя которого будем приглашать в чат при создании, ибо этот шаг пропустить нельзя. Идём дальше:
    Код
    for j in range(int(data)):
    create_chat()
    else:
    app.kill()
    green()
    print('Account ' + str(i) + ' completed work!')
    blue()
    sleep(1)
    shutil.rmtree("Telegram")
    sleep(1)
    else:
    green()
    print('Work completed!')
    blue()
    После того как цикл с созданием аккаунта прошёл, мы убиваем это приложение и отписываем, что аккаунт закончил работу, затем ждём одну секунду и удаляем папку Telegram, чтобы создать её вновь с другим аккаунтом.

    После того как все аккаунты закончили работу, мы отписываем в консоль, что работа завершена. Работу программы можно увидеть на гифке ниже:

    https://gifyu.com/image/mzkH

    Ниже преведен конечный вариант кода:
    Python
    import win32gui
    import pywinauto
    from pywinauto.application import Application
    from pywinauto.keyboard import send_keys
    from time import sleep
    import os
    import shutil
    from ctypes import *

    random_user = 'testbot'

    def blue():
    h = windll.Kernel32.GetStdHandle(c_ulong(0xfffffff5))
    windll.Kernel32.SetConsoleTextAttribute(h, 3)

    def err():
    h = windll.Kernel32.GetStdHandle(c_ulong(0xfffffff5))
    windll.Kernel32.SetConsoleTextAttribute(h, 4)

    def green():
    h = windll.Kernel32.GetStdHandle(c_ulong(0xfffffff5))
    windll.Kernel32.SetConsoleTextAttribute(h, 10)

    def create_chat():
    pywinauto.mouse.click(button='left', coords=(25, 46))
    pywinauto.mouse.click(button='left', coords=(111, 195))
    send_keys('My Random chat', with_spaces=True)
    pywinauto.mouse.click(button='left', coords=(540, 468))
    pywinauto.mouse.click(button='left', coords=(274, 189))
    send_keys(random_user, with_spaces=True)
    sleep(2)
    pywinauto.mouse.click(button='left', coords=(345, 251))
    pywinauto.mouse.click(button='left', coords=(541, 686))


    if __name__ == '__main__':
    os.system("COLOR 01")
    os.system("CLS")
    blue()
    print('How many chats to create?')
    green()
    data = input(">>> ")
    os.system("CLS")
    VA = os.listdir(path="VA") # Dir Valid Accaunt
    for i in VA:
    shutil.copytree("VA\\" + i, "Telegram")
    shutil.copy('Telegram.exe', 'Telegram')
    app = Application(backend="uia").start('Telegram\\Telegram.exe')
    sleep(3)
    hwnd = win32gui.FindWindow(None, "Telegram")
    win32gui.MoveWindow(hwnd, 0, 0, 800, 800, True)
    for j in range(int(data)):
    create_chat()
    else:
    app.kill()
    green()
    print('Account ' + str(i) + ' completed work!')
    blue()
    sleep(1)
    shutil.rmtree("Telegram")
    sleep(1)
    else:
    green()
    print('Work completed!')
    blue()
     
    9 апр 2020 Изменено
  2. dedonosec
    dedonosec 9 апр 2020 16 29 дек 2018
    Для каких целей его можно использовать?
     
  3. Ljopv91rdewr
    Ljopv91rdewr 12 апр 2020 443 4 май 2019
    А ты знал о разных разрешениях экрана?
     
  4. VLAGA_inactive186728
    VLAGA_inactive186728 14 апр 2020 ищу работу 138 1 окт 2017
    зачем трать столько времени на такой код
    когда всё можно сделать в несколько строк на "Telethon" - функцией CreateChatRequest
     
  5. httsmvkcom
    httsmvkcom 14 апр 2020 Актуальных контактов нет 1354 27 мар 2019
    Telethon, не не слышали?
     
  6. ketch_inactive2790559
    ketch_inactive2790559 14 апр 2020 Заблокирован(а) 80 21 ноя 2019
    усложнил ты себе задачу конечно пиздец, за старания лайк
     
  7. CapsLock73
    CapsLock73 14 апр 2020 6 11 янв 2020
    Что вы наежаете на парня?! Намного интересней писать самому, без готовых библиотек. Я понимаю тебя, продолжай в том же духе. :finger_up:
     
Загрузка...
Top