I am attempting to make a Discord bot in Python that gives you a role on a Discord server based upon what class you are in (at my school). I have just started, but I am receiving an error whenever I attempt to run it (I run it in Google Colab in a Python 3 Notebook). Here is my code:
from datetime import date
import time
import discord
client = discord.Client()
@client.event
async def on_ready():
print('We have logged in as {0.user}'.format(client))
client.run('my token (not shown for obvious reasons)')
starttime=time.time()
while True:
currentTime = time.strftime("%H:%M")
print("new minute")
if 0 <= date(int(time.strftime("%Y")), int(time.strftime("%m")), int(time.strftime("%d"))).weekday() <= 4:
if currentTime == "13:41":
print("First hour has started!")
elif currentTime == "13:45":
print("First hour has started! (hs)")
elif currentTime == "14:30":
print("First hour has ended at high school.")
time.sleep(60.0 - ((time.time() - starttime) % 60.0))
When I run it, it presents me with this error:
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-5-d40f2b4200ae> in <module>()
9 print('We have logged in as {0.user}'.format(client))
10
---> 11 client.run('my token')
12
13 starttime=time.time()
2 frames
/usr/local/lib/python3.6/dist-packages/discord/client.py in run(self, *args, **kwargs)
570
571 try:
--> 572 loop.add_signal_handler(signal.SIGINT, lambda: loop.stop())
573 loop.add_signal_handler(signal.SIGTERM, lambda: loop.stop())
574 except NotImplementedError:
/usr/lib/python3.6/asyncio/unix_events.py in add_signal_handler(self, sig, callback, *args)
92 "with add_signal_handler()")
93 self._check_signal(sig)
---> 94 self._check_closed()
95 try:
96 # set_wakeup_fd() raises ValueError if this is not the
/usr/lib/python3.6/asyncio/base_events.py in _check_closed(self)
375 def _check_closed(self):
376 if self._closed:
--> 377 raise RuntimeError('Event loop is closed')
378
379 def _asyncgen_finalizer_hook(self, agen):
RuntimeError: Event loop is closed
If I put the client.run
command at the bottom, the program never reaches it because the loop prevents it from reaching the command.
Am I missing something? I do not know where the problem is. Would appreciate help.