当前位置: 首页 > 知识库问答 >
问题:

如何将Discord Bot连接到语音频道?

萧嘉禧
2023-03-14

我查看了所有关于将discord机器人连接到语音频道以播放声音的问题,但找不到我需要的答案。我是discord library的新手,没有解决问题的工作原理,所以当我在网站上尝试给出答案时,我经常会遇到如下错误:

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)

这只是代码的语音部分,其他发送或事件部分正在工作。

共有2个答案

左丘昕
2023-03-14
@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()

顺便说一句,别忘了安装不和谐,py[语音]模块。我希望它有帮助: D

祁雪峰
2023-03-14

这里是我用的,我评论它,因为我可以

@ 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}).")

顺便说一句,音乐和语音机器人非常复杂,如果你是初学者,最好做一些简单的事情,比如控制命令和游戏。

 类似资料:
  • 键入命令后(如果键入命令的人在语音频道中),它会将同一语音呼叫中的每个成员移动到不同的语音呼叫。到目前为止,我已经尝试使用各种代码,但我不确定如何返回给定vc中的每个成员(键入命令的人) > 如何检查输入命令的人是否在语音通话中? 如何返回给定VC中的所有成员? 如何将所有成员批量移动到新的给定频道?

  • 我想知道是否有可能知道任何成员连接到discord中的特定语音频道。jsv12。2.0. 最近几天我一直在问这个问题。如果你有什么线索,请告诉我。

  • 尝试制作一个简单的音乐机器人,只播放一个链接,但它不连接到语音通道,因此不会出现任何错误,所以我只能放入所有代码。这是我的主要内容。js公司 这是我的音乐机器人命令,我认为它是正确的,因为我已经在这里请求了一些人的帮助。

  • 我正在开发一个应用程序,我们只需要将耳机插孔用作按钮。 要求:连接耳机时通过听筒播放默认音频(通话)(无需通过耳机收听音频) 有许多通过扬声器和耳机以及蓝牙耳机路由音频的示例,但没有任何关于通过连接耳机的设备的耳式扬声器路由音频的内容。我已经尝试了很多,有些链接是 Android:强制音频路由(在我的场景中不起作用) 我查过sound about(https://play . Google . c

  • null 提前感谢您的任何帮助:)

  • 问题内容: 我正在尝试将freetts用于一个简单的Java应用程序,但是我遇到了一个问题,谁能告诉我如何在我的程序中将输出的语音(从文本转换为语音)保存为wave文件。我想通过代码做到这一点。 这是示例提供的示例helloworld应用程序 这段代码可以正常工作,我想将输出保存为磁盘上的音频文件。 谢谢普兰尼 问题答案: 我想出了方法,您只需要简单地使用传递文件名和文件类型,样本声明就应该像这样