我目前正在discord.py为discord服务器开发一个www.example.com -rewrite(1.3.3)bot。目前,我正在尝试让bot播放语音通道中的音乐。根据discord.py文档,您将使用函数channel.connect()连接到语音通道,它将返回一个VoiceClient对象。
然而,我从来没有从channel.connect()中得到一个VoiceClient对象。bot确实加入了我的频道,但它似乎陷入了一个无限循环。在“await channel.connect()”行之后没有执行任何内容,所以“test”行没有被打印出来。当我在服务器中更新bot的角色时,它工作了一次,但在我重新启动bot后,它就不再工作了。
# This is just a function, not the command the user calls. The context is passed through
async def join(ctx):
voice_status = ctx.author.voice
# Checking if author voice_status is not none
if voice_status:
# Getting the channel of the author
channel = voice_status.channel
if ctx.voice_client is None:
# Connect the bot
vc = await channel.connect()
print("test")
我在github和overflow上发现了一些线程,人们在那里遇到了同样的问题,但是他们从来没有修复过。我很确定代码是正确的。
我已经尝试过重新安装和更新discord.py。我也在discord API服务器中寻求帮助,但他们无法复制我的问题。
这是我的第一个溢出后,所以我道歉提前如果有任何错误与我的职位。
干杯
4条答案
按热度按时间mfuanj7w1#
以下是让机器人加入语音通道的方法:
PS:如果你加了
play
命令,你还是要把bot的频道和声音跟那些对行:iqjalb3h2#
我删除了你的评论,并添加了我自己的
#comments
vq8itlhq3#
我觉得这是个老问题,但我自己花了很长时间来解决这个问题,而且我在网上也没有找到任何答案。我的问题是我的机器人没有语音方面的意向。如果你的机器人只是为一小群人,比如你的朋友,只要设置
intents
到discord.Intents.all()
就可以了。否则你可以手动选择它们。kgsdhlau4#
您有问题discord RTC。您的机器人尝试连接,但rtc被防火墙阻止。您应该在防火墙中启用DNS UDP。