Загрузка...

Python clicker for creating chats on the official Telegram client

Thread in Python created by archi05 Apr 9, 2020. 623 views

  1. archi05
    archi05 Topic starter Apr 9, 2020 161 Jul 1, 2018
    Начнём с импорта зависимостей:

    Code
    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) мы вписываем пользователя которого будем приглашать в чат при создании, ибо этот шаг пропустить нельзя. Идём дальше:
    Code
    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()
     
  2. dedonosec
    dedonosec Apr 9, 2020 16 Dec 29, 2018
    Для каких целей его можно использовать?
     
  3. Ljopv91rdewr
    А ты знал о разных разрешениях экрана?
     
  4. VLAGA_inactive186728
    VLAGA_inactive186728 Apr 14, 2020 ищу работу 138 Oct 1, 2017
    зачем трать столько времени на такой код
    когда всё можно сделать в несколько строк на "Telethon" - функцией CreateChatRequest
     
  5. httsmvkcom
    httsmvkcom Apr 14, 2020 Актуальных контактов нет 1354 Mar 27, 2019
    Telethon, не не слышали?
     
  6. ketch_inactive2790559
    ketch_inactive2790559 Apr 14, 2020 Banned 80 Nov 21, 2019
    усложнил ты себе задачу конечно пиздец, за старания лайк
     
  7. CapsLock73
    CapsLock73 Apr 14, 2020 6 Jan 11, 2020
    Что вы наежаете на парня?! Намного интересней писать самому, без готовых библиотек. Я понимаю тебя, продолжай в том же духе. :finger_up:
     
Top
Loading...