Исходник Clast PC Control [v.1.5 / UPD: 22.02.2024]

0x22

Участник
Автор темы
18
5
5e35ac3e75844a668e165dbc5a7d4967.png

Clast PC Control - это кроссплатформенная утилита для управления устройством путем отправки команд через Telegram-бота.
На данный момент большинство подобных программ не поддерживаются разработчиками. Clast PC Control имеет частичную кроссплатформенность (Linux, Windows).
Бота вы создаете сами, через @BotFather. Токен нужно лишь вписать в конфигурационный файл.

/ОтключитьОтключает скрипт
/СкриншотДелает скриншот и отправляет в бота
/ВыключитьПКВыключает ПК
/ПерезагрузитьПКПерезагружает ПК
/ВыклТаймер (время, mc)Таймер до выключения
/ПерезТаймер (время, mc)Таймер до перезагрузки
/ОтменаВыключенияОтменяет все процессы, связанные с управлением питанием
/ALT+TABВыполняет Alt+Tab
/ALT+F4Выполняет Alt+F4
/ВводТекста (text)Вводит заданный текст
/Поиск (text)Поиск в браузере
/ОткрытьСсылку (url)Открыть ссылку в браузере
/EnterВыполняет Enter


Инструкция по установке:
  1. Создать бота в @BotFather, скопировать токен
  2. Вставить свой токен в settings.json (строка TOKEN)
  3. Запустить скрипт
  4. Нажать "Подключиться"
1707674646729.png

| Clast PC Control/
|___main.py [Запуск в консолью]
|___main.pyw [Запуск без консоли]
|___settings.json
|___src/
-----|___screenshot.png [Создается при скриншоте]
|___old/
-----|___main.py [OLD GUI (after 1.4)]

Необходимые библиотеки:
  1. telebot
  2. asyncio
  3. pyautogui
  4. keyboard
pip3 install <library>

source:
# import

import json
from telebot import *
import asyncio
import pyautogui
import os
import sys
import keyboard
import webbrowser

# configuration


with open('settings.json', 'r') as settings:
    sdata = json.load(settings)


token = sdata['TOKEN']
version = sdata['VERSION']
bot = TeleBot(token)



# bot body

@bot.message_handler(commands=['start'])
def bstart(message):
    klava = types.ReplyKeyboardMarkup()
    b1 = types.KeyboardButton('/Отключить')
    b2 = types.KeyboardButton('/Скриншот')
    b3 = types.KeyboardButton('/ВыключитьПК')
    b4 = types.KeyboardButton('/ПерезагрузитьПК')
    b5 = types.KeyboardButton('/ВыклТаймер')
    b6 = types.KeyboardButton('/ПерезТаймер')
    b7 = types.KeyboardButton('/ОтменаВыключения')
    b8 = types.KeyboardButton('/ALT+TAB')
    b9 = types.KeyboardButton('/ALT+F4')
    b10 = types.KeyboardButton('/ВводТекста')
    b11 = types.KeyboardButton('/ОткрытьСсылку')
    b12 = types.KeyboardButton('/Поиск')
    b13 = types.KeyboardButton('/Enter')
    klava.add(b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13)
    bot.send_message(message.from_user.id, f'Бот активирован. Работа осуществляется под управлением системы Clast PC Control [v.{version}]', reply_markup=klava)


@bot.message_handler(commands=['ОткрытьСсылку'])
def link_open(message):
    url = message.text[14:]
    webbrowser.open_new(url)


@bot.message_handler(commands=['Поиск'])
def browse(message):
    source = message.text[6:]
    source.replace(' ', '+')
    webbrowser.open_new('https://yandex.ru/search/?lr=10735&text=' + str(source))

@bot.message_handler(commands=['Скриншот'])
def bscreen(message):
    screen = pyautogui.screenshot('src/screenshot.png')
    scr = open('src/screenshot.png','rb')
    bot.send_photo(message.from_user.id, scr)
    os.remove('src/screenshot.png')

@bot.message_handler(commands=['Отключить'])
def bexit(message):
    loading_id = message.message_id
    bot.delete_message(message.chat.id, loading_id)
    os.abort()

@bot.message_handler(commands=['ВыключитьПК'])
def shutdown(message):
    if os.name == 'posix':
        os.system('shutdown now')
    elif os.name == 'nt':
        os.system('shutdown /s /t 0')

@bot.message_handler(commands=['ПерезагрузитьПК'])
def reboot(message):
    if os.name == 'posix':
        os.system('shutdown -r now')
    elif os.name == 'nt':
        os.system('shutdown /r /t 0')

@bot.message_handler(commands=['ВыклТаймер'])
def shuttime(message):
    message = message.text[11:]
    message = int(message)
    if os.name == 'posix':
        os.system(f'shutdown -t {message}')
    elif os.name == 'nt':
        os.system(f'shutdown /s /t {message}')

@bot.message_handler(commands=['ПерезТаймер'])
def rebtime(message):
    message = message.text[12:]
    message = int(message)
    if os.name == 'posix':
        os.system(f'shutdown -r {message}')
    elif os.name == 'nt':
        os.system(f'shutdown /r /t {message}')

@bot.message_handler(commands=['ОтменаВыключения'])
def shutcancel(message):
    if os.name == 'posix':
        os.system('shutdown -c')
    elif os.name == 'nt':
        os.system('shutdown /a')


@bot.message_handler(commands=['ALT+TAB'])
def alttab(message):
    keyboard.press_and_release('Alt+Tab')

@bot.message_handler(commands=['ALT+F4'])
def altf4(message):
    keyboard.press_and_release('Alt+F4')

@bot.message_handler(commands=['ВводТекста'])
def vvod(message):
    message = message.text[12:]
    keyboard.write(message)

@bot.message_handler(commands=['Enter'])
def enter(message):
    keyboard.press_and_release('Enter')

# functions




if token == 'Введите свой токен Telegram-бота сюда':
    print('Error!')
else:
    try:
        loop = asyncio.get_event_loop()
        loop.create_task(bot.polling(none_stop=True))
        print('Started')
        loop.run_forever()
    except Exception as e:
        print(e)


Для отключения используйте /Отключить







Проект полностью с открытым исходным кодом. Вы можете модифицировать его, как душе угодно. Код конечно грязноват, но главное что работает.
Товарищи форумчане, прошу вас оставить хоть какой-то фидбек :)


Qlcode Dev. a.k.a. 0x22
qlcode.dev@gmail.com
VK: @githuberrr
TG: ind1ana_j0n3s
DS: __neadekvat__



last version: 1.5
 

Вложения

  • Clast_PC_Control_1.5.zip
    5.9 KB · Просмотры: 2
  • Clast_PC_Control_1.4.zip
    2.7 KB · Просмотры: 0
  • Clast_PC_Control_1.3.zip
    2.7 KB · Просмотры: 0
Последнее редактирование:
  • Эм
Реакции: Corenale

xanndiane

Известный
521
148
/ВыклТаймер (время, mc)Таймер до выключения (only Linux)
/ПерезТаймер (время, mc)Таймер до перезагрузки (only Linux)
в чем проблема добавить под шиндовс?

Код:
shutdown /s /t {секунды} Выключение
shutdown /r /t {секунды} Ребут
shutdown /a Отмена отключение
 
  • Нравится
  • Клоун
Реакции: Fott, 0x22 и AnWu

0x22

Участник
Автор темы
18
5
в чем проблема добавить под шиндовс?

Код:
shutdown /s /t {секунды} Выключение
shutdown /r /t {секунды} Ребут
shutdown /a Отмена отключение
мне долго добавлять и тестить было, ибо я на линуксе сижу.
сегодня добавлю

pizdec:
from telebot import *
from telebot import types

ахуенна

1.2 Update | 12.02.2024

Изменения:
- Поправлено управление питанием, теперь можно запускать и с Линукса и с Винды
- Добавлена возможность поиска
- Добавлена возможность открытия ссылок
- Убраны ненужные импорты
- Прочие небольшие правки

Дополнил топик. Обновил информацию, файл.

Архив прикреплен ниже.
 

Вложения

  • Clast_PC_Control_1.2.zip
    2.9 KB · Просмотры: 4
Последнее редактирование:

0x22

Участник
Автор темы
18
5

Вложения

  • Clast_PC_Control_1.2.1.zip
    2.9 KB · Просмотры: 3
  • Нравится
Реакции: xanndiane

0x22

Участник
Автор темы
18
5
1.3 Update | 14.02.2024

Что изменилось?

- Теперь все данные (версия, токен) хранятся в общем конфигурационном файле - settings.json
- Небольшие изменения, исправления

Обновил инструкцию по установке.
 

Вложения

  • Clast_PC_Control_1.3.zip
    2.7 KB · Просмотры: 2

UwwU

Участник
59
6
Вау, минуты 2-3 так сижу
 

Вложения

  • TuNSgYEvGX.png
    TuNSgYEvGX.png
    281.1 KB · Просмотры: 37

0x22

Участник
Автор темы
18
5
Вау, минуты 2-3 так сижу
все в норме, если скрипт завис - значит можно уже управлять через бота. просто свернуть надо. в будущем асинхронность сделаю, чтобы интерфейс работал. если бы он просто виснул намертво - я бы не заливал скрипт.
 

Ben Puls

Активный
110
26
все в норме, если скрипт завис - значит можно уже управлять через бота. просто свернуть надо. в будущем асинхронность сделаю, чтобы интерфейс работал. если бы он просто виснул намертво - я бы не заливал скрипт.
Надо было изначально на aiogram писать.
 

0x22

Участник
Автор темы
18
5
Надо было изначально на aiogram писать.
учту

1.4 Update [BUGFIX] | 16.02.2024

Что изменилось?
- Добавлена команда /Enter (подробнее в спойлере "Команды")
- Начата разработка альтернативного клиента для поддержки полной асинхронности (aiogram)
- Исправлены визуальные ошибки
- Улучшена функция запуска (переход на asyncio)
- Незначительные изменения, повышение читабельности кода

Напоминаю: если кнопка подключения после нажатия стала неактивной - значит все верно, бот запущен. Нужно просто свернуть окно клиента для удобства и спокойно отправлять команды. Я уже в процессе решения этой проблемы путем перехода на aiogram.
 

Вложения

  • Clast_PC_Control_1.4.zip
    2.7 KB · Просмотры: 5
Последнее редактирование:

UwwU

Участник
59
6
Было бы классно если бы эту программу можно было свернуть в трей или вообще скрыть, чтобы закрывать через диспетчер задач.
И запускать через авто-загрузку без окна с кнопкой подключения.
 

0x22

Участник
Автор темы
18
5
А нахуя в нем интерфейс ?
вообще я планировал сделать полноценный клиент (с настройками и т.д.), но все пошло по пизде. В следующем апдейте будет отказ от GUI, во всяком случае это будет удобнее.

Было бы классно если бы эту программу можно было свернуть в трей или вообще скрыть, чтобы закрывать через диспетчер задач.
И запускать через авто-загрузку без окна с кнопкой подключения.
будет такое
 
  • Нравится
Реакции: UwwU