Как автоматически нажимать Повтор, если Дипсик занят
Иногда при работе с Дипсиком сервер может быть перегружен, и вместо нужного интерфейса появляется сообщение "Сервер занят". В таком случае приходится вручную нажимать кнопку "Повтор", что отнимает время. Но этот процесс можно автоматизировать с помощью Python-скрипта!
Как это работает
Скрипт использует библиотеку pyautogui для поиска изображений на экране и эмуляции кликов. Алгоритм простой:
- Ждём появления картинки "Сервер занят" (шаблон
template_path1). - Как только она найдена — кликаем по кнопке "Повтор" (шаблон
template_path).
Подготовка файлов
Код скрипта
import cv2
import numpy as np
import pyautogui
import time
from PIL import ImageGrab
# Функция для захвата экрана
def capture_screen():
screen = ImageGrab.grab()
screen = np.array(screen)
screen = cv2.cvtColor(screen, cv2.COLOR_RGB2BGR)
return screen
# Функция для поиска объекта на экране
def find_object_on_screen(template_path):
template = cv2.imread(template_path, cv2.IMREAD_COLOR)
screen = capture_screen()
result = cv2.matchTemplate(screen, template, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
return max_loc, max_val
# Функция для эмуляции движения мыши и нажатия кнопки
def aim_and_shoot(target_position):
current_position = pyautogui.position()
currentMouseX, currentMouseY = current_position
x, y = target_position
#pyautogui.moveTo(x+186, y+46, duration=0.2) # Двигаем мышь к точке
pyautogui.moveTo(x+50, y+10, duration=0)
pyautogui.click() # Выстрел
pyautogui.moveTo(currentMouseX, currentMouseY, duration=0) #возвращаем мышь назад
#pyautogui.click()
print("clicked")
# Основной цикл бота
def main():
#template_path = "server_busy.png" # Шаблон изображения
template_path1 = "TheServerIsBusy_text.png"
template_path = "deepseek_update.png"
template_path2 = "too_frequently.png"
while True:
target_position2, confidence2 = find_object_on_screen(template_path2)
if confidence2 > 0.9:
print("long pause")
time.sleep(600)
target_position1, confidence1 = find_object_on_screen(template_path1)
if confidence1 < 0.9:
#print("tet")
time.sleep(1)
continue
target_position, confidence = find_object_on_screen(template_path)
print ('Confindence: ', confidence)
print ('Target position: ', target_position)
if confidence > 0.8: # Если уверенность в обнаружении высока
aim_and_shoot(target_position)
print ("Position found!!!")
#print ('Target position: ', target_position)
#print ('Confindence: ', confidence)
time.sleep(1) # Пауза между итерациями
if __name__ == "__main__":
main()
Как запустить
Важные моменты
✔ Точность изображений – шаблоны должны быть чёткими, без лишних элементов.
✔ Разрешение экрана – скрипт работает только при том же разрешении, на котором сделаны скриншоты.
✔ Задержка – если кнопка появляется не сразу, можно увеличить time.sleep().
Теперь скрипт будет автоматически нажимать "Повтор", когда Дипсик занят! 🚀