Katalysmus
Katalysmus

Reputation: 41

How to I make a my discord bot join a voice channel *in a category*?

I'd like to write a bot with the ability to join; This is my code

import json
import discord
from discord.ext import commands

JSON_FILE = r"C:\JSON PATH"
bot = commands.Bot(command_prefix = "~")

with open(JSON_FILE, "r") as json_file:
    TOKEN = json.load(json_file)["token"]
    GUILD = json.load(json_file)["guild"]

bot = commands.Bot(command_prefix = "~")

@bot.event
async def on_ready():
    print(f"{bot.user.name} launched and has arrived for further use")

@bot.command(name = "join")
async def join(ctx, voice_channel: commands.VoiceChannelConverter):
    await voice_channel.connect()
    await ctx.send(f"I have joined: {voice_channel}")

@bot.command(name = "leave")
async def leave(ctx):
    server = ctx.message.server
    voice_client = bot.voice_client_int(server)
    await voice_client.disconnect()

bot.run(TOKEN)

It can join usual channels but it cannot join channels in categories. Any advice on how to do that? Thank you in advance

Upvotes: 0

Views: 302

Answers (1)

LoahL
LoahL

Reputation: 2613

The problem is probably, that you are using an outdated version of discord.py since you are using server, which is deprecated since v1.0, and not guild. If you update it, it will probably work, because it worked for me too when I tried it.

To code it to automatically join the voice channel of the user executing the command, just use ctx.author.voice.channel:

@bot.command(name = "join")
async def join(ctx, voice_channel: commands.VoiceChannelConverter):
    if not ctx.author.voice is None:
        await ctx.author.voice.channel.connect()
        await ctx.send(f"I have joined your voice channel.")
    else:
        await ctx.send("You are not in a voice channel!")

References:

Upvotes: 1

Related Questions