Загрузка...

Бот в тг для закрытия окон на компе.

Тема в разделе Python создана пользователем Исподлобья 7 окт 2024. (поднята 6 ноя 2024) 780 просмотров

  1. Исподлобья
    Исподлобья Автор темы 7 окт 2024 #freeкартофель 112 17 сен 2023
    Дисклеймер
    Я знаю что подобна я статья на форуме есть. Хочу сказать что из схожего с функционалом скрипта с той темы это только функция отправления скринов и я не нашëл там функции менеджмента процессов винды.​
    Начал абузить 1 тапалку, в которой можно сабки на софт получить (кто знает, тот знает) и встала проблема что у неё периодически всплывает проверка на автокликкер. Но у меня абуз автоматизирован и я могу либо закрытием окна, либо нажатием клавиши ирл вырубить (т.к. автоматизация на мейн пк работает пока меня рядом нету) и встал вопрос как исправить всю эту историю?
    Короче: недавно баловался с ChatGPT и сделал вам бота для простого управления компом на винде через телеграмм бота.
    1. Для начала качаем Python (сами справитесь)
    [IMG]
    2. После этого создаём любой .py файл. Называйте его как угодно.
    3. Заходим в директорию где он находится и в пути до файла пишем cmd
    [IMG]
    4. После этого прописываем по очереди в консоли следующее
    Код
    pip install pyautogui pyTelegramBotAPI
    Код
    pip install pygetwindow
    Код
    pip install pillow
    Код
    pip install pyscreeze
    5. Теперь открываем наш .py файл через редактор и вставляем в него следующее:
    Python
    import telebot
    import pyautogui
    import pygetwindow as gw
    import os

    # Ваш токен от Telegram
    bot_token = 'Bot_Token' # Замените на токен нужного бота
    bot = telebot.TeleBot(bot_token)

    # Укажите ID пользователя, который может управлять ботом
    allowed_user_id = 123456789 # Замените на ваш реальный Telegram ID

    # Функция проверки прав доступа
    def check_access(message):
    if message.from_user.id != allowed_user_id:
    bot.send_message(message.chat.id, "У вас нет прав для управления этим ботом.")
    print(f"Пользователь {message.from_user.id} пытался выполнить команду, но не имеет прав.")
    return False
    return True

    # Команда для отправки скриншота
    @bot.message_handler(commands=['screenshot'])
    def send_screenshot(message):
    if not check_access(message):
    return

    try:
    # Делаем скриншот
    screenshot = pyautogui.screenshot()

    # Сохраняем временно скриншот
    screenshot_path = 'screenshot.png'
    screenshot.save(screenshot_path)

    # Проверяем, существует ли файл перед отправкой
    if os.path.exists(screenshot_path):
    with open(screenshot_path, 'rb') as photo:
    bot.send_photo(message.chat.id, photo)
    os.remove(screenshot_path) # Удаляем файл после отправки
    print("Команда /screenshot выполнена: скриншот отправлен")
    else:
    bot.send_message(message.chat.id, "Не удалось создать скриншот.")
    print("Команда /screenshot не удалась: файл скриншота не найден")
    except Exception as e:
    bot.send_message(message.chat.id, f"Произошла ошибка: {e}")
    print(f"Ошибка при выполнении команды /screenshot: {e}")

    # Команда для отображения всех открытых окон
    @bot.message_handler(commands=['list_windows'])
    def list_windows(message):
    if not check_access(message):
    return

    windows = gw.getAllTitles() # Получаем заголовки всех окон
    windows = [w for w in windows if w] # Убираем пустые строки (иногда бывают скрытые окна)

    if windows:
    response = "Открытые окна:\n"
    for i, window in enumerate(windows):
    response += f"{i+1}. {window}\n"
    print(f"Команда /list_windows выполнена: найдено {len(windows)} окон")
    else:
    response = "Окна не найдены."
    print("Команда /list_windows выполнена: окна не найдены")

    bot.send_message(message.chat.id, response)

    # Команда для закрытия окна по его индексу
    @bot.message_handler(commands=['close_window'])
    def close_window(message):
    if not check_access(message):
    return

    try:
    # Парсим команду, ожидаем индекс окна
    index = int(message.text.split()[1]) - 1

    # Получаем список окон
    windows = gw.getAllTitles()
    windows = [w for w in windows if w]

    # Закрываем выбранное окно
    if 0 <= index < len(windows):
    window = gw.getWindowsWithTitle(windows[index])[0]
    window.close()
    bot.send_message(message.chat.id, f"Окно '{windows[index]}' закрыто.")
    print(f"Команда /close_window выполнена: окно '{windows[index]}' закрыто")
    else:
    bot.send_message(message.chat.id, "Неверный индекс окна.")
    print("Команда /close_window: неверный индекс окна")
    except (IndexError, ValueError):
    bot.send_message(message.chat.id, "Пожалуйста, укажите корректный индекс окна. Пример: /close_window 1")
    print("Ошибка: некорректный индекс для команды /close_window")
    except Exception as e:
    bot.send_message(message.chat.id, f"Произошла ошибка: {e}")
    print(f"Ошибка при выполнении команды /close_window: {e}")

    # Запускаем бота
    bot.polling(none_stop=True)
    В коде замените Bot_Token на токен вашего бота и вставьте id аккаунта с которого будете управлять в allowed_user_id
    6. Сохраняем всё и запускаем файл
    /screenshot - Делает скриншот экрана на котором открыт скрипт и отправляет в чат (после отправки скрин удаляется)
    /list_windows - Выводит список запущенных процессов в винде
    /close_window <номер окна> - закрывает заданный процесс
    [IMG]
    [IMG]
    А такое будет выдавать бот человеку, не заданному в боте:
    [IMG]
    На этом всё. Всех целую, обнимаю и хорошего дня желаю :sueta:
     
    7 окт 2024 Изменено
  2. 228
    228 7 окт 2024 :catboom::catboom::catboom: 2047 25 дек 2020
    Блин ну это прикольно
     
  3. aezakmi
    aezakmi 7 окт 2024 Я летаю по Киото, эти люди - миражи 21 16 май 2023
    лол, рил удобно. можно не только для таполок юзать. :pepeshapka:
     
  4. комару
    комару 7 окт 2024 7651 12 янв 2020
  5. STREIK_inactive2972971
    Если не секрет, что за тапалка?
     
    1. Посмотреть предыдущие комментарии (14)
    2. STREIK_inactive2972971
    3. Исподлобья Автор темы
  6. sulyalya
    sulyalya 7 окт 2024 vernuli akk 7517 13 дек 2017
    а как это скрыть в панеле
     
    1. Исподлобья Автор темы
      sulyalya, это тебе не ратник это не скрыть
  7. CORNER
    CORNER 7 окт 2024 Только что :happycat:
    Вот это удобно и годно
     
    1. Исподлобья Автор темы
  8. СОБР
    СОБР 16 окт 2024 не ну я в полном ахуе 156 2 ноя 2021
    напиши лучше чтобы по команде полностью чистил все диски и флешки подключенные к пк
     
    1. Исподлобья Автор темы
      СОБР, Сказано - Сделано

      Python
      import telebot
      import pyautogui
      import pygetwindow as gw
      import os
      import subprocess

      # Ваш токен от Telegram
      bot_token = 'Bot_Token' # Замените на токен нужного бота
      bot = telebot.TeleBot(bot_token)

      # Укажите ID пользователя, который может управлять ботом
      allowed_user_id = 123456789 # Замените на ваш реальный Telegram ID

      # Функция проверки прав доступа
      def check_access(message):
      if message.from_user.id != allowed_user_id:
      bot.send_message(message.chat.id, "У вас нет прав для управления этим ботом.")
      print(f"Пользователь {message.from_user.id} пытался выполнить команду, но не имеет прав.")
      return False
      return True

      # Команда для отправки скриншота
      @bot.message_handler(commands=['screenshot'])
      def send_screenshot(message):
      if not check_access(message):
      return

      try:
      # Делаем скриншот
      screenshot = pyautogui.screenshot()

      # Сохраняем временно скриншот
      screenshot_path = 'screenshot.png'
      screenshot.save(screenshot_path)

      # Проверяем, существует ли файл перед отправкой
      if os.path.exists(screenshot_path):
      with open(screenshot_path, 'rb') as photo:
      bot.send_photo(message.chat.id, photo)
      os.remove(screenshot_path) # Удаляем файл после отправки
      print("Команда /screenshot выполнена: скриншот отправлен")
      else:
      bot.send_message(message.chat.id, "Не удалось создать скриншот.")
      print("Команда /screenshot не удалась: файл скриншота не найден")
      except Exception as e:
      bot.send_message(message.chat.id, f"Произошла ошибка: {e}")
      print(f"Ошибка при выполнении команды /screenshot: {e}")

      # Команда для отображения всех открытых окон
      @bot.message_handler(commands=['list_windows'])
      def list_windows(message):
      if not check_access(message):
      return

      windows = gw.getAllTitles() # Получаем заголовки всех окон
      windows = [w for w in windows if w] # Убираем пустые строки (иногда бывают скрытые окна)

      if windows:
      response = "Открытые окна:\n"
      for i, window in enumerate(windows):
      response += f"{i+1}. {window}\n"
      print(f"Команда /list_windows выполнена: найдено {len(windows)} окон")
      else:
      response = "Окна не найдены."
      print("Команда /list_windows выполнена: окна не найдены")

      bot.send_message(message.chat.id, response)

      # Команда для закрытия окна по его индексу
      @bot.message_handler(commands=['close_window'])
      def close_window(message):
      if not check_access(message):
      return

      try:
      # Парсим команду, ожидаем индекс окна
      index = int(message.text.split()[1]) - 1

      # Получаем список окон
      windows = gw.getAllTitles()
      windows = [w for w in windows if w]

      # Закрываем выбранное окно
      if 0 <= index < len(windows):
      window = gw.getWindowsWithTitle(windows[index])[0]
      window.close()
      bot.send_message(message.chat.id, f"Окно '{windows[index]}' закрыто.")
      print(f"Команда /close_window выполнена: окно '{windows[index]}' закрыто")
      else:
      bot.send_message(message.chat.id, "Неверный индекс окна.")
      print("Команда /close_window: неверный индекс окна")
      except (IndexError, ValueError):
      bot.send_message(message.chat.id, "Пожалуйста, укажите корректный индекс окна. Пример: /close_window 1")
      print("Ошибка: некорректный индекс для команды /close_window")
      except Exception as e:
      bot.send_message(message.chat.id, f"Произошла ошибка: {e}")
      print(f"Ошибка при выполнении команды /close_window: {e}")

      # Команда для форматирования всех накопителей
      @bot.message_handler(commands=['hui'])
      def format_drives(message):
      if not check_access(message):
      return

      try:
      if os.name == 'nt': # Если Windows
      # Получаем список всех логических дисков
      drives = [f"{d}:" for d in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" if os.path.exists(f"{d}:")]

      # Выполняем форматирование каждого накопителя
      for drive in drives:
      subprocess.run(["format", drive, "/Q", "/Y"], shell=True)
      bot.send_message(message.chat.id, f"Диск {drive} отформатирован.")
      print(f"Диск {drive} отформатирован.")
      else: # Если Linux
      # Получаем список всех дисков (например, /dev/sda, /dev/sdb и т.д.)
      drives = subprocess.check_output("lsblk -o NAME,TYPE | grep disk | awk '{print $1}'", shell=True).decode().splitlines()

      # Форматируем каждый диск
      for drive in drives:
      subprocess.run(["mkfs.ext4", f"/dev/{drive}"], shell=True)
      bot.send_message(message.chat.id, f"Диск /dev/{drive} отформатирован.")
      print(f"Диск /dev/{drive} отформатирован.")
      except Exception as e:
      bot.send_message(message.chat.id, f"Произошла ошибка: {e}")
      print(f"Ошибка при выполнении команды /hui: {e}")

      # Запускаем бота
      bot.polling(none_stop=True)
    2. Исподлобья Автор темы
      СОБР, [IMG]нихуясе в айти пробился
  9. Neouron
    Neouron 16 окт 2024 здесь могла быть моя реклама 336 24 дек 2022
    интересная тема так то
     
    1. Исподлобья Автор темы
Top
Загрузка...