We present a unique implementation of python coding in an asynchronous object-oriented programming (OOP) framework to fully automate the process of collecting data with the George Mason University (GMU) Observatories 0.8-meter telescope, available on GitHub at LINK. The goal of this project is to diminish the need for students to stay awake all night collecting research data and monitoring weather, most often for follow-up observations for the Transiting Exoplanet Survey Satellite (TESS) mission, while still allowing for human control, monitoring and adjustments. Prior to our implementation, the facility was computer controlled by a human through a combination of webcams, TheSkyX, ASCOM Dome, MaxIm DL, and a weather station. We have automated slews and dome movements, CCD exposures, saving FITS images and metadata, initial focusing, guiding on the target, using the ambient temperature to adjust the focus as the telescope cools through the rest of the night, and taking calibration images (darks and flats). We also have automated periodically checking the humidity, clouds, Sun altitude, and precipitation radar from multiple sources in the background, to automate the decision-making involved in whether or not a shutdown is necessary due to adverse conditions. We have organized the OOP code structure in such a way that each hardware device or important higher-level process is categorized as its own object class or “module” with associated attributes and methods, with inherited common methods across modules for code reusability. An immediate challenge that we encountered was permitting multiple simultaneous actions across modules. To address this issue, we implemented a multithreaded approach where each module is given its own thread on which to operate concurrently with all other threads. After the initial few modules (camera, telescope, dome, data I/O) were developed, further development of the code was carried out in tandem with testing on sky on clear nights, which greatly accelerated development and improved robustness and reliability of the automated operations. We have now achieved our goal of a fully automated nightly observation process: students are now able to input the specifications of the desired target in a user-friendly GUI that generates an input configuration file and launches the command-line code at the beginning of the night. The code, in its current state, has been tested and used for observations without error on at least 10 nights, with more planned usage and feature additions.