I am trying to create a Discord bot with Python, however whenever I run the sample code here:
import discord
client = discord.Client()
@client.event
async def on_message(message):
# we do not want the bot to reply to itself
if message.author == client.user:
return
if message.content.startswith('!hello'):
msg = 'Hello {0.author.mention}'.format(message)
await client.send_message(message.channel, msg)
@client.event
async def on_ready():
print('Logged in as')
print(client.user.name)
print(client.user.id)
print('------')
client.run('tokenhere')
It returns the error:
Traceback (most recent call last):
File "<ipython-input-6-ea5a13e5703d>", line 1, in <module>
runfile('C:/Users/User/Pictures/rito_bot.py', wdir='C:/Users/User/Pictures')
File "C:\Users\User\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 703, in runfile
execfile(filename, namespace)
File "C:\Users\User\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 108, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/User/Pictures/rito_bot.py", line 22, in <module>
client.run('token')
File "C:\Users\User\Anaconda3\lib\site-packages\discord\client.py", line 595, in run
_cleanup_loop(loop)
File "C:\Users\User\Anaconda3\lib\site-packages\discord\client.py", line 97, in _cleanup_loop
loop.close()
File "C:\Users\User\Anaconda3\lib\asyncio\selector_events.py", line 94, in close
raise RuntimeError("Cannot close a running event loop")
RuntimeError: Cannot close a running event loop
Every other line seems to run just fine, but without the last line it doesn't connect to the server, which makes it useless.
Note: I have seen the question here, however OP's solution doesn't seem applicable to my situation.
A way to end the entire script your bot is running on is by using the built in python functions exit() and quit() both do the same thing. by putting @commands. is_owner() you're making it so that only the owner of the bot can use this command.
According to the maintainer, Discord has told that the bots will continue to work fine even after April 2022.
(Spyder maintainer here) To run async code in our consoles you first need to install the nest_asyncio package and then call it before running any of your code as described on its Readme.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With