What's new
Runion

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

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

agrok

Light Weight
Депозит
$0
корова не моя, может кому пригодиться.

Скрытый контент для зарегистрированных пользователей.
[CLIKE]
Начнём с импорта зависимостей:

Код:
Скопировать в буфер обмена
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 и вам не придётся мучиться.
Код:
Скопировать в буфер обмена
pip install pywinauto

Модуль ctypes нам нужен для более красивого вывода в консоль Windows (что совершенно не обязательно). Начнём с функции main:
Код:
Скопировать в буфер обмена
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(), которая окрашивает цвет вывода в синий и после вывода текста окрашиваем будущий текст, который введет пользователь, в зеленый. Сама функция изменения цвета в синий будет ниже, так же как и функции изменения цвета в зеленый и красный:
Код:
Скопировать в буфер обмена
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)

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

Далее, всё в той же функции main мы добавляем пару циклов для работы с аккаунтами телеграм.
Код:
Скопировать в буфер обмена
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()
Код:
Скопировать в буфер обмена
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, чтобы создать её вновь с другим аккаунтом.

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


Ниже преведен конечный вариант кода:
Код:
Скопировать в буфер обмена
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()

[/CLIKE]
 
Top