Skip to content

Reco is a Discord bot to remote control your PC using your Discord Channel or using Reco: Discord PC Remote Controller App.

License

Notifications You must be signed in to change notification settings

Arvinth-Krishna/Reco-PC-Server

Repository files navigation

Reco PC Server

Reco PC Server

GitHub issues GitHub forks GitHub stars GitHub license
GitHub release (latest SemVer) GitHub release (by tag) GitHub all releases

Reco PC Server is a cross platform PC Controller Discord Bot which is a modified and improved version of Chimera for Reco-Discord PC Remote Controller app & it's written in Python discord.py.

Using Reco you can easily control your computer remotely and have it do from simple tasks such as shutdown, sleep, and lock to opening a website or executing powershell commands.

Reco PC Server is a self hosted bot, which means that you have to run the bot on your computer - the machine you want to control via discord commands.

Installing Reco PC Server is an easy 3 minute process. 🎬 YouTube - Reco Playlist

If you have any issues with Reco or you just want the latest news on the developement of the bot you can visit our support server for more info.

YouTube Video Views Discord BuyMeACoffee

Quick Jumps

Reco - Mobile App

Reco: Discord PC Remote Controller-Mobile App is now available on Play Store✌.

🎬 YouTube - How to install and use Reco - Mobile App

Get Reco: Discord PC Remote Controller on Google Play

  • Reco-Mobile App contain 4 tabs
    • Home Screen
    • Media Screen
    • Command Screen
    • Webhook Screen

Screenshots:

Reco - Discord PC Remote Controller App Reco - Discord PC Remote Controller App Reco - Discord PC Remote Controller App Reco - Discord PC Remote Controller App Reco - Discord PC Remote Controller App Reco - Discord PC Remote Controller App Reco - Discord PC Remote Controller App Reco - Discord PC Remote Controller App

Requirements:

Note: You only need to manually install Python to get started. All other dependencies will be automatically downloaded & installed after running setup.bat or setup.sh. (#installation_process)

  • discord.py
  • mss
  • opencv-python
  • Pillow
  • playsound
  • plyer
  • pycaw
  • pynput
  • pyperclip
  • Python 3
  • python-dotenv
  • pytube
  • pystray
  • speedtest-cli
  • win10toast

Features List:

Features Documentation:

★ Abort

  • !abort

    Aborts the Shutdown or Restart schedule.

      e.g: !abort
    

★ Alert

  • !alert on or !alert off or !alert onwithbeep

    Alerts user interaction.

      e.g: !alert onwithbeep
    

★ AppQuitter

  • !appquitter PID/Application_Name or !appquitter PID/Application_Name minutes

    Quits the specified application immediately or with a time delay in minutes.

      e.g: !appquitter chrome 30
    

★ Battery Level

  • !batterylevel or !batterylevel show

    To check the estimated battery charge remaining.

      e.g: !batterylevel
    

★ Battery Report Generator

  • !batteryreport or !batteryreport file

    Generates a detailed battery report for your PC. Screenshots

      e.g: !batteryreport
    

★ Camera

  • !camera command or !camera command time

    Controls computer camera for taking photo or filming for a given time in seconds (default is 5 seconds).

      e.g: !camera video 10
      list of commands:
      - video time
      - photo
    

★ Clip

  • !clip text or !clip get

    !clip - Copy the message to your PC's Clipboard. !clip get - Get data from PC's Clipboard

      e.g: !clip Copy this text to PC's Clipboard
    

★ Cmd

  • !cmd "command"

    Executes command in cmd.exe.

      e.g: !cmd shutdown -a
    

★ Commands

  • !commands

    Shows all Reco Commands.

      e.g: !commands
    

★ Echo

  • !echo status

    Turns on or off !cmd and !powershell command echo in chat. When turned on, the command return will be sent to chat.

      e.g: !echo on (or) !echo off
    

★ File

  • !file command or !file command path

    Browses, saves and retrieves files from or to your computer.

      e.g: !file relative ..
      list of commands:
      - absolute => sets an absolute path
      - relative => sets a relative path
      - list => lists current path
      - retrieve => uploads a file to the chat from your system
      - save => saves a file to your saved_files directory in your system from the chat
      - save folder => opens the saved_files directory
      - rsave => saves a file to your current relaive path from the chat
      - open => opens the current relative path
      - download => saves a file from a direct url to the your system
    

★ Help

  • !help or !help command

    Shows Reco help, listing commands of shows help for a specific command.

      e.g: !help screenshot
    

★ Hibernate

  • !hibernate or !hibernate minutes

    Hibernates your computer immediately or with a time delay in minutes.

      e.g: !hibernate 30
    

★ Launch

  • !launch shortcut or !launch list or !launch list_index

    Launches a custom shortcut you placed in the shortcuts folder.

    🎬 YouTube - How to use App Launcher

      e.g: !launch Application_Name_in_Shortcut_Folder
    

★ Lock

  • !lock or !lock minutes

    Locks your computer immediately or with a time delay in minutes.

      e.g: !lock 30
    

★ Log

  • !log param or !log param date

    turns on or off chat logging or show log for given date (defaults to today).

      e.g: !log show 2021-02-08
    

★ Media

  • !media command or !media command time/times time

    Controls computer media playback and volume once or repeatedly.

    For Play, Pause, and Stop commands have delay_n_minutes feature.

      e.g: !media prev 2
      list of commands:
      - vol-up
      - vol-down
      - vol-mute
      - say-cv
      - cv
      - next
      - prev
      - stop
      - play
      - pause
      - key-tab
      - key-space
      - key-enter
      - key-up
      - key-down
      - key-left
      - key-right
      - key-close
      - key-quit	
    

★ Music

  • !music "query" or !m "query"

    "query" can be a song name or video link or playlist link

    Plays video music from YouTube in VLC Player.

    ⚠ To use this command you need to add VLC to the Path (Environmental Variables)

    Default path: C:\Program Files\VideoLAN\VLC

    Trouble in Playing Music in VLC?

    If VLC shows some error while trying to play a song.

    ⚠ Try Replacing youtube.lua file from VLC.

    Default path: C:\Program Files\VideoLAN\VLC\lua\playlist

      e.g: !music The Nights 
                or
           !m The Nights
           
           !m quit      - Quits the VLC Player.
           !m play      - Play the paused song.
           !m pause     - Pause the current playing song.
           !m stop      - Stops the song.
           !m next      - Play the next song if you have any queued song.
           !m prev      - Play the previous song if you have any queued song.
    

    Advanced Music commands:

    ⚠ You can even download any video from YouTube using Reco into .mp3 or .mp4 file.

    ⚠⚠IMPORTANT: Sometimes Download feature won't work, maybe it's because of some changes made on YouTube's API and it will take time to get new some new update from Pytube package✌.

      e.g: !music dm The Nights
                or
           !m dm The Nights
           
           !m dm *query*      - Downloads music files.
           !m dv *query*      - Downloads videos files.
           !m df              - Shows Download folder.
    

★ Notification

  • !notification "message"

    Sends a notification to the computer.

      e.g: !notification who are you?
    

★ Powershell

  • !powershell "command"

    Executes command in Powershell.

      e.g: !powershell shutdown -s -t 300
    

★ Printer

  • !printer

    To print documents from Discord.

      - !printer showprinters           or showp
      - !printer showcurrentprinter     or showcp
      - !printer showdefaultprinter     or showdp
      - !printer setcurrentprinter NUM  or setcp NUM
      - !printer setcp  reset           or setcp none
      - !printer setdefaultprinter NUM  or setdp NUM
      - !printer folder list            or folder   
      - !printer folder open
      - !printer folder upload          or upload
      - !printer folder delete
      - !printer folder delete NUM
      - !printer folder print (optional Attributes: p_ n_ c_ o_)
      - !printer jobs   list            or jobs
      - !printer jobs   delete
      - !printer jobs   delete Num
      - !printer print        (optional Attributes: p_ n_ c_ o_)
      - !printer print "FILE_PATH-WITH DOUBLE QUOTES"  (optional Attributes: p_ n_ c_ o_)
    
         🔸 Optional Attributes can be used with print parameters.
         🔸 All Optional Attributes are optional.
         🔸 Remember:
            p(NUM) > Current Printer > Default Printer
         🔸 Optional Attributes -> p(NUM) n(NUM) c(b/c) o(p/l)
            Explanations:
               p(Num) -> p1 -> Printer Number
               n(NUM) -> n1 -> No of Copies
               c(b/c) -> cb -> Color Mode 
                          b -> Black & White
                          c -> Color
               o(p/l) -> op -> Orientation
                          p -> Potrait
                          l -> Landscape 
         eg: 
            Read 1st point in FYI.
            !printer folder print n2 cc
            !printer folder print p3 n2 op
            !printer print n5 ol
            !printer print "C:\Users\krish\Desktop\print test.txt" n2
    

★ Processes

  • !processes

    Shows the current Foreground Apps with PID.

      e.g: !processes
    

★ Reco

  • !reco

    Shows all about your Reco PC Server.

      e.g: !reco
    

★ Restart

  • !restart or !restart minutes

    Restarts your computer immediately or with a time delay in minutes.

      e.g: !restart 30
    

★ RPC

  • !rpc start or !rpc stop or !rpc restart

    Shows Rich Presences.

      e.g: !rpc start
    

★ Say

  • !say "text"

    Uses powershell commands and a TTS engine to make your computer say something.

      e.g: !say Reco
    

★ ScreenShot

  • !screenshot or !screenshot seconds

    Takes a screenshot of your computer and sends it back to you.

      e.g: !screenshot 1
    

★ Google Search

  • !search or !search query

    Helps you to search your query in Google very easily.

      e.g: !search Reco Discord PC Remote Controller
    

★ Shutdown

  • !shutdown or !shutdown minutes

    Shuts down your computer immediately or with a time delay in minutes.

      e.g: !shutdown 30
    

★ SignOut

  • !signout or !signout minutes

    Sign out your user immediately or with a time delay in minutes.

      e.g: !signout 30
    

★ Sleep

  • !sleep or !sleep minutes >

    Sleeps your computer immediately or with a time delay in minutes.

      e.g: !sleep 30
    

★ Speedtest

  • !speedtest

    Shows your internet speed.

      e.g: !speedtest
    

★ System Info

  • !systeminfo

    Shows your System Information.

      e.g: !systeminfo
    

★ URL Launcher

  • !url website

    Opens the website in your browser.

      e.g: !url www.google.com
    

★ Version Checker

  • !version

    Shows the current version of Reco PC Server.

      e.g: !version
    

★ Wlan Signal

  • !wlansignal

    To check the signal strength of a Wi-Fi Connection.

      e.g: !wlansignal
    

★ Wake

  • !wake on or !wake off

    Keeps screen always on.

      e.g: !wake on
    

★ Whatsapp

  • !whatsapp countryCode_MobileNumber or !whatsapp web

    Opens chat screen for entered mobile number (Click to Chat feature).

      e.g: !whatsapp 911234567890
    

★ YouTube Search

  • !yt play query or !youtube search

    Shows search result on YouTube.

      e.g: !yt Avicii - The Nights
    

Note:

  • All above commands works best on Windows and some commands may not work on other platforms.
  • And some commands may require elevated privileges on Linux.

Installation:

Text Instructions:

  1. Download & Install Python - Remember: Tick the Add to path checkBox during installation.
  2. Create a bot and get its token by following these instructions: https://youtu.be/-m-Z7Wav-fM
  3. Download the Reco PC Server Repository, run setup.bat on Windows or setup.sh on Linux and put your Bot Token in the newly created .env file.
  4. Get Webhook URL from your Channel and add it in your Webhook tab in your Reco mobile App. https://www.youtube.com/watch?v=2Fcvg-Bh7Oo&t=1s
  5. Launch reco.pyw, right click on the system tray icon and hit Connect to invite Reco Pc Server to your Discord server.
  6. Enjoy!🥳

Video tutorial:

Click below GIF to see the video. Video Tutorial

To Deal with any Error during Installation:

Error 1: Building wheel for multidict (PEP 517) ... error

 error: Microsoft Visual C   14.0 or greater is required. Get it with "Microsoft C   Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
 ----------------------------------------
 ERROR: Failed building wheel for multidict
 Failed to build yarl multidict
 ERROR: Could not build wheels for yarl, multidict which use PEP 517 and cannot be installed directly```
  • Its an simple error and can easily solved by following below instrustion:
    • We will Just Install and then Uninstall - Visual Studio C Build Tools.
    • Now, just install Visual Studio Installer and then install Build Tools.
    • And now try again to run setup.bat on Windows or setup.sh on Linux from Downloaded Reco Folder.
    • After successfully installed Reco setup, Paste your Bot Token in the newly created .env file & continue following the instuction from the 4th Step
    • And, now you can uninstall Visual Studio Installer from Controll Panel

Error 2: WARNING: The script chardetect.exe is installed in ........ which is not on PATH.

  • To solve this issue just copy and paste the path which is given in the error in The Environmental variable.
    • eg:

      WARNING: The script chardetect.exe is installed in 'C:\Users\USER_NAME\AppData\Roaming\Python\Python39\Scripts' which is not on PATH.
      
    • If you get above given error in the console while running setup.bat or setup.sh. Then follow below given instruction.

    • Copy the Path from the error given in the setup.bat console or change the username in this path and try it: C:\Users\ USER_NAME\AppData\Roaming\Python\Python39\Scripts

    • Now go to Start Menu and Type: Edit environment variables for your account

    • In that click Path and then add the copied path in that field and click OK.

    • And now try again to run setup.bat on Windows or setup.sh on Linux from Downloaded Reco Folder.

    • After successfully installed Reco setup, Paste your Bot Token in the newly created .env file & continue following the instuction from the 4th Step

User Restricter:

  • Using this feature you can easily restrict commands permission by adding User's Id in user_restricter.py file.

  • Follow the commented instruction in that file.

    Synatx for webhook restricter:

      { 
      
              #1️⃣ Replace User Name
              'userName':'Demo(GAK)',         # Here you can enter the User name, so you can identify easily in this file. 
    
              #2️⃣ Replace User ID
              'userId':'113595095059988521',   # Watch this video if you don't know how to get User ID - https://youtu.be/OS2rp7wHVTI
    
              #3️⃣ Before sharing your Reco with others. you can set permission to each commands as you wish🥳
              # "True"  => means Permission granted to use the command.
              # "False" => means Permission Denied to use the command.
    
               # For safety and security purposes we have set False as default for all commands and you can override by mentioning commands permission down here.
    
               # ⚠ Powerfull Commands: (All powerfull commands will be "False" by default)
               '!abort':False,
               '!appquitter':False,
               '!cmd':False,
               '!file': False,
               '!hibernate':False,
               '!lock':False,
               '!logoff':False,
               'media_Close&QuitKeys':False,          # !media key-close, !media key-quit 
               '!powershell':False,
               '!restart':False,
               '!shutdown':False,
               '!sleep':False,
    
                # Moderate Commands:
                '!camera':True,
                '!clip':True,
                '!launch':True,
                '!screenshot':True,              
    
                # Media Commands: (!media)
                'media_Function_Keys':True,           # next, prev, stop, play, pause
                'media_Volume_Keys':True,             # vol-up, vol-down, vol-mute
                'media_ArrowKeys':True,               # key-up, key-down, key-left, key-right
                'media_Tab,Space&EnterKeys':True,     # key-tab, key-space, key-enter
                'other_media_commands':True,          # say-vol, cv
    
                # Other Commands:
                '!batterylevel':True,
                '!batteryreport':True,
                '!echo':True,
                '!log':True,
                '!music':True,
                '!m':True,
                '!notification':True,
                '!help':True,
                '!processes':True,
                '!search':True,
                '!say':True,
                '!speedtest':True,
                '!systeminfo':True,
                '!url':True,
                '!version':True,
                '!whatsapp':True,
                '!wlansignal':True,
                '!youtube':True,
      },
    

Webhook Restricter:

🎬 YouTube - How to use Webhook Restricter

  • Using Reco mobile app you can easily control your PC using webhook. And if you want to share your webhooks with others and you want to restrict some commands.

  • You can restrict so easily by adding that webhook in webhook_restricter.py file.

  • Follow the commented instruction in that file.

    Synatx for webhook restricter:

      { 
      
              #1️⃣ Replace webhook Name
              'webhookName':'Demo webhook',       # Here you can enter the Webhook name, so you can identify easily in this file. 
    
              #2️⃣ Replace webhook URL & ID
              'webhookURL':'https://discord.com/api/webhooks/841227223729700866/aW4XpuFTUfweJIcQAqTSgikXZu6r5r6Q8MK_rOawf6qj_dyAUVQUCzbTm6Is0Bs8bQFG',
              'webhookId':'841227223729700866',   # You can obtain the "webhook id" by looking at the webhook URL, the number after https://discord.com/api/webhooks/ is the "id" , and the part after that is the token. 
    
               #3️⃣ Before sharing your Webhook URL to others. you can set permission to each commands as you wish🥳
               # "True"  => means Permission granted to use the command.
               # "False" => means Permission Denied to use the command.
    
               # ⚠ Powerfull Commands: (All powerfull commands will be "False" by default)
               '!abort':False,
               '!appquitter':False,
               '!cmd':False,
               '!file': False,
               '!hibernate':False,
               '!lock':False,
               '!logoff':False,
               'media_Close&QuitKeys':False,          # !media key-close, !media key-quit 
               '!powershell':False,
               '!restart':False,
               '!shutdown':False,
               '!sleep':False,
    
                # Moderate Commands:
                '!camera':True,
                '!clip':True,
                '!launch':True,
                '!screenshot':True,              
    
                # Media Commands: (!media)
                'media_Function_Keys':True,           # next, prev, stop, play, pause
                'media_Volume_Keys':True,             # vol-up, vol-down, vol-mute
                'media_ArrowKeys':True,               # key-up, key-down, key-left, key-right
                'media_Tab,Space&EnterKeys':True,     # key-tab, key-space, key-enter
                'other_media_commands':True,          # say-vol, cv
    
                # Other Commands:
                '!batterylevel':True,
                '!batteryreport':True,
                '!echo':True,
                '!log':True,
                '!music':True,
                '!m':True,
                '!notification':True,
                '!help':True,
                '!processes':True,
                '!search':True,
                '!say':True,
                '!speedtest':True,
                '!systeminfo':True,
                '!url':True,
                '!version':True,
                '!whatsapp':True,
                '!wlansignal':True,
                '!youtube':True,
      },
    

Setting up Task Scheduler for Reco-Startup:

These instruction will help you to setup Reco to startup automatically when we start your PC. It looks like lenghty but its so easy to setup, just follow the steps. So chill, do and have fun...

🎬 YouTube - How to set up Reco Startup using Task Scheduler

  1. Open Task Scheduler by typing it inside the start menu.
  2. click Create Task
  3. Enter the Name as Reco Startup
  4. And now check(✔) the Run with highest privileges checkBox
  5. And then, go to Triggers tab and click New
  6. And set Begin the task: At log on and also set Delay task for: 8 seconds and then click OK
  7. And again click New and set Begin the task: On Workstation Unlock - Any user and also set Delay task for: 8 seconds and then click OK
  8. And now go to Actions tab and click New
  9. Now set
    • Action: Start a Program
    • Program/script: C:\Users\USERNAME\AppData\Local\Programs\Python\Python39\pythonw.exe (change the USERNAME in this path to your username)
    • Add arguments(optional): reco.pyw
    • Start in (optional): C:\Users\USERNAME\Downloads\Reco-PC-Server-main (change the USERNAME in this path to your username or paste the downloaded RecoPCServer Repository path)
    • And click OK
  10. And now go to Conditions tab and uncheck all the checkBox and Check(✔) ONLY Network CheckBox -> (Start only if following network connection avaliable: Any Connection)
  11. And now Click OK
  12. Next time when you turn on your PC - Reco will Start Automatically🥳.

Contributing:

Reco was written to be modular so one can easily modify the code and enhance it. I welcome and greatly appreciate anyone who wishes to contribute a module of their own. Here's how to create a Reco module:

  1. Create your *_module.py under the modules directory. See lock_module.py for a good example on how to structure yours.
  2. Create an entry for your modules in reco.pyw. The file is full of examples.
  3. Test Reco PC Server with your changes and make a pull request if everything works well.
  4. Update the README.md file to include your new module and your github profile under Contributors

Donate

If you found this project helpful and want to thank me, consider buying me a cup of ☕

Credits:

  • CedArctic and all contributors for creating Chimera which is modified and improved. And now it act as a server(PC controller) for Reco-Discord PC Remote Controller app.
  • A special thanks goes to Big Flubba#3494 for assisting in the developement and ideas for Reco along with the creation of the support server.

Contributors:

❤️ Found this project useful?

If you found this project useful, then please consider giving it a ⭐ on Github and sharing it with your friends via social media.