Создаем бота в «Telegram» для закрытия окон на ПК

Добро пожаловать на наш форум!

Спасибо за посещение нашего сообщества. Пожалуйста, зарегистрируйтесь или войдите, чтобы получить доступ ко всем функциям.


Gibby

Автор
Команда проекта

Регистрация
Сообщений
1,635
Репутация
45
Сделок
Сегодня я расскажу вам, как можно создать бота в «Telegram», с помощью которого вы сможете: дистанционно делать скриншот экрана, на котором открыт скрипт, выводить список всех запущенных процессов и закрывать их с помощью команд.

1.jpg2.jpg

Этот скрипт идеально подойдет тем, кто абузит различные сервисы, в которых время от времени нужно подтверждать то, что вы реальный человек, а не автокликер. Или же тем, кто занимается не совсем законной деятельностью и в любой момент могут нагрянуть с обыском.

1. Скачиваем Python (https://www.python.org/downloads/release/python-3100/) версии 3.10 и при установке не забываем включить галочку "PATH";
2. Создаем любую папку, а в нём файл "main.py", жмём на строку, где указывается путь до файла, и прописываем там "CMD";
3. В консоль прописываем команды по очереди: "pip install pyautogui pyTelegramBotAPI" & "pip install pygetwindow" & "pip install pillow" & "pip install pyscreeze";
4. Открываем файл "main.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)
5. Переходим в @BotFather, создаем нашего бота и копируем его токен в любое удобное для вас место, а также переходим в нашего бота и пишем /start;
6. Возвращаемся в "main.py", вставляем туда токен нашего бота и ваш ID;
7. Сохраняем файл и в консоль прописываем "py main.py". Заходим в бота и вводим нужную вам команду:
• /screenshot — делает скриншот экрана на котором открыт скрипт и отправляет в чат (после отправки скриншот удаляется);
• /list_windows —выводит список запущенных процессов в «Windows»;
• /close_window *номер окна — закрывает заданный процесс;
8. Поздравляю, вы великолепны!
 
Сверху