Skip to content

Instantly share code, notes, and snippets.

@sleetla
Created September 20, 2016 01:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sleetla/f5be5d8e993845f8d849628e19fa1d4d to your computer and use it in GitHub Desktop.
Save sleetla/f5be5d8e993845f8d849628e19fa1d4d to your computer and use it in GitHub Desktop.
pass
def main():
if not sys.version_info >= (3, 5):
print("Python 3.5+ is required. This version is %s" % sys.version.split()[0])
print("Attempting to locate python 3.5...")
pycom = None
# Maybe I should check for if the current dir is the musicbot folder, just in case
if sys.platform.startswith('win'):
try:
subprocess.check_output('py -3.5 -c "exit()"', shell=True)
pycom = 'py -3.5'
except:
try:
subprocess.check_output('python3 -c "exit()"', shell=True)
pycom = 'python3'
except:
pass
if pycom:
print("Python 3 found. Launching bot...")
os.system('start cmd /k %s run.py' % pycom)
sys.exit(0)
else:
try:
pycom = subprocess.check_output(['which', 'python3.5']).strip().decode()
except:
pass
if pycom:
print("\nPython 3 found. Re-launching bot using: ")
print(" %s run.py\n" % pycom)
os.execlp(pycom, pycom, 'run.py')
print("Please run the bot using python 3.5")
input("Press enter to continue . . .")
return
import asyncio
tried_requirementstxt = False
tryagain = True
loops = 0
max_wait_time = 60
while tryagain:
# Maybe I need to try to import stuff first, then actually import stuff
# It'd save me a lot of pain with all that awful exception type checking
m = None
try:
from musicbot import MusicBot
m = MusicBot()
print("Connecting...", end='', flush=True)
m.run()
except SyntaxError:
traceback.print_exc()
break
except ImportError as e:
if not tried_requirementstxt:
tried_requirementstxt = True
# TODO: Better output
print(e)
print("Attempting to install dependencies...")
err = PIP.run_install('--upgrade -r requirements.txt')
if err:
print("\nYou may need to %s to install dependencies." %
['use sudo', 'run as admin'][sys.platform.startswith('win')])
break
else:
print("\nOk lets hope it worked\n")
else:
traceback.print_exc()
print("Unknown ImportError, exiting.")
break
except Exception as e:
if hasattr(e, '__module__') and e.__module__ == 'musicbot.exceptions':
if e.__class__.__name__ == 'HelpfulError':
print(e.message)
break
elif e.__class__.__name__ == "TerminateSignal":
break
elif e.__class__.__name__ == "RestartSignal":
loops = -1
else:
traceback.print_exc()
finally:
if not m or not m.init_ok:
break
asyncio.set_event_loop(asyncio.new_event_loop())
loops += 1
print("Cleaning up... ", end='')
gc.collect()
print("Done.")
sleeptime = min(loops * 2, max_wait_time)
if sleeptime:
print("Restarting in {} seconds...".format(loops*2))
time.sleep(sleeptime)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment