Reputation: 3
I'm messing around with a bot for the first time but can't seem to get it to join a voice channel. I know the $join command is working because my bot will say "Connecting to {channel}" with the correct channel name, but it still never connects. If I'm not in a voice channel, the bot will correctly say "Error".
I've tried every single solution I can find online. Every time the bot will identify the correct channel but it simply won't join the channel. This feels like such a simple problem so I'm not sure how I can use similar code as others and still not have it work. Below is the code I'm using for the command. I left out all the prefix and bot setup code because all the messages I send work fine.
@bot.command()
async def join(ctx):
if (ctx.author.voice):
channel = ctx.message.author.voice.channel
await ctx.send(f"Connecting to {channel}")
await channel.connect()
else: await ctx.send("Error")
Upvotes: 0
Views: 1999
Reputation: 116
asyncio.TimeoutError – Could not connect to the voice channel in time.
discord.ClientException – You are already connected to a voice channel.
discord.OpusNotLoaded – The opus library has not been loaded.
These are the following errors that the bot can raise for VoiceChannel.connect()
If you are not receiving errors when you should, this points towards a poorly made global command handler on_command_error
.
You either want to remove that for the time being to get the actual error on the console, or fix it by output the error in a case where the error isn't handled. A common way of doing that is:
import sys
import traceback
@bot.event
async def on_command_error(ctx, error):
if x: # let x, y, z be isinstance check for error
# do this
elif y:
# do that
elif z:
# idk do something other than this and that
else:
print('Ignoring exception in command {}:'.format(ctx.command), file=sys.stderr)
traceback.print_exception(type(error), error, error.__traceback__, file=sys.stderr)
After getting your actual error for joining the VC, check through these:
asyncio.TimeoutError
: This error is raised when your bot has a
weak internet connection or your ping is absurdly high, high enough
to not make a connection.discord.ClientException
: Might want to check if bot is not in VC when it starts up, and also that you have relevant guild intents and voice intents enabled.discord.OpusNotLoaded
: Your device does not have libopus
loaded, you might want to search for that online depending on what you use. If you are on an ubuntu-based linux distro, you can use sudo apt install libopus0
and then try to see if it fixed your issue. I am not sure about windowsIf you can't figure it out after you read the above stuff, let me know the EXACT ERROR
you are facing, which includes the traceback message (the whole error text that will print onto your console)
Upvotes: 1