executive meek
executive meek

Reputation: 25

Python discord bots

I am currently trying to create my discord bot. sadly, this does not work and I have no Idea why...

import discord
import os
import time
from ka import keep_alive
from discord.ext import commands
import asyncio

client = commands.Bot(command_prefix = '.')
prefix = '.'

@client.event
async def on_ready():
  print("I'm ready! {0.user}".format(client))
  await client.change_presence(activity=discord.Activity(type=discord.ActivityType.watching, name="Croissants!"))

@client.command()
async def join(ctx):
  channel = ctx.message.author.voice.voice_channel
  await client.join_voice_channel(channel)
  await ctx.send("On my way!")

client.run(os.getenv('TOKEN'))

there are NO errors. But no output aswell. I try making it join my vc by writing: .join

Upvotes: 2

Views: 113

Answers (2)

mrzen
mrzen

Reputation: 133

channel returns None, because ctx.message.author don't have voice attribute. Also, Client.join_voice_channel is deprecated since v1.0 (read here)

Instead of that, try this:

import discord
import os
import time
from ka import keep_alive
from discord.ext import commands
import asyncio

client = commands.Bot(command_prefix = '.')
prefix = '.'

@client.event
async def on_ready():
  print("I'm ready! {0.user}".format(client))
  await client.change_presence(activity=discord.Activity(type=discord.ActivityType.watching, name="Croissants!"))

@client.command()
async def join(ctx):
  channel = ctx.guild.get_member(ctx.author.id).voice.channel # This
  await channel.connect()
  await ctx.send("On my way!")

client.run(os.getenv('TOKEN'))

Upvotes: 1

jort57
jort57

Reputation: 76

Do client.add_command(join). You currently have the function for your command, but you haven't told the bot to recognize it as a command.

Upvotes: 0

Related Questions