Python 如何将Discord Bot连接到语音频道?
我查看了所有关于将discord机器人连接到语音频道以播放声音的问题,但我找不到我需要的答案。我是discord library的新手,在网站上尝试给出答案时,我没有解决问题的工作原理。我经常会遇到这样的错误:Python 如何将Discord Bot连接到语音频道?,python,python-3.x,discord.py,Python,Python 3.x,Discord.py,我查看了所有关于将discord机器人连接到语音频道以播放声音的问题,但我找不到我需要的答案。我是discord library的新手,在网站上尝试给出答案时,我没有解决问题的工作原理。我经常会遇到这样的错误: AttributeError: 'NoneType' object has no attribute 'channel' discord.ext.commands.errors.CommandInvokeError: Command raised an exception: Attri
AttributeError: 'NoneType' object has no attribute 'channel'
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'NoneType' object has no attribute 'channel'
我的代码如下所示:
import discord
from dotenv import load_dotenv
from discord.ext import commands
load_dotenv()
token = "XXXXXXXXXXXXXXXXX"
client = commands.Bot(command_prefix='.')
voice = discord.VoiceChannel
@client.command(name="join")
async def join(ctx):
channel = ctx.author.voice.channel
voice = get(self.bot.voice_clients, guild=ctx.guild)
if voice and voice.is_connected():
await voice.move_to(channel)
else:
voice = await channel.connect()
client.run(Token)
这只是代码的语音部分,其他发送或事件部分正在工作。这是我使用的,我尽可能地对其进行了注释
@ client.command(name='join',aliases = ['summon']) # CREATING COMMAND "JOIN" WITH ALIAS SUMMON
async def _join(ctx, *, channel: discord.VoiceChannel = None): # TAKING ARGUMENT CHANNEL SO PPL CAN MAKE THE BOT JOIN A VOICE CHANNEL THAT THEY ARE NOT IN
"""Joins a voice channel."""
destination = channel if channel else ctx.author.voice.channel # CHOOSING THE DESTINATION, MIGHT BE THE REQUESTED ONE, BUT IF NOT THEN WE PICK AUTHORS VOICE CHANNEL
if ctx.voice_client: # CHECKING IF THE BOT IS PLAYING SOMETHING
await ctx.voice_state.voice.move_to(destination) # IF THE BOT IS PLAYING WE JUST MOVE THE BOT TO THE DESTINATION
return
await destination.connect() # CONNECTING TO DESTINATION
await ctx.send(f"Succesfully joined the voice channel: {destination.name} ({destination.id}).")
顺便说一句,音乐和语音机器人真的很复杂,如果你是初学者,最好做一些简单的事情,比如控制命令和游戏。这是我使用的,我尽可能地对其进行了评论
@ client.command(name='join',aliases = ['summon']) # CREATING COMMAND "JOIN" WITH ALIAS SUMMON
async def _join(ctx, *, channel: discord.VoiceChannel = None): # TAKING ARGUMENT CHANNEL SO PPL CAN MAKE THE BOT JOIN A VOICE CHANNEL THAT THEY ARE NOT IN
"""Joins a voice channel."""
destination = channel if channel else ctx.author.voice.channel # CHOOSING THE DESTINATION, MIGHT BE THE REQUESTED ONE, BUT IF NOT THEN WE PICK AUTHORS VOICE CHANNEL
if ctx.voice_client: # CHECKING IF THE BOT IS PLAYING SOMETHING
await ctx.voice_state.voice.move_to(destination) # IF THE BOT IS PLAYING WE JUST MOVE THE BOT TO THE DESTINATION
return
await destination.connect() # CONNECTING TO DESTINATION
await ctx.send(f"Succesfully joined the voice channel: {destination.name} ({destination.id}).")
@client.command()
async def enter(ctx):
connected = ctx.author.voice
if not connected:
await ctx.send("You need to be connected in a voice channel to use this command!")
return
global vc
vc = await connected.channel.connect()
顺便说一句,音乐和语音机器人非常复杂,如果你是初学者,最好做一些简单的事情,比如控制命令和游戏
@client.command()
async def enter(ctx):
connected = ctx.author.voice
if not connected:
await ctx.send("You need to be connected in a voice channel to use this command!")
return
global vc
vc = await connected.channel.connect()
顺便说一句,别忘了安装discord,py[voice]模块。我希望这有帮助:D
顺便说一句,别忘了安装discord,py[voice]模块。我希望它有帮助:D我在这个线程看到了这个.join命令。我在这个线程看到了这个.join命令。我想知道答案,但我仍然得到了错误,错误是:
discord.ext.commands.errors.MissingRequiredArgument:ctx是缺少的必需参数代码>从函数中删除“self”参数,此命令取自cog,我忘记删除self。Thaks获取答案,但我仍然得到错误,即:discord.ext.commands.errors.MissingRequiredArgument:ctx是缺少的必需参数代码>从函数中删除“self”参数,该命令取自cog,我忘记删除self。