免责声明:我重新发布了此问题,并删除了原始问题,因为一个人给出了一个愚蠢的答案,从而降低了该问题的可见性。
基本上,我正在将我的机器人迁移到Discord.py的重写版本。
我正在测试仅具有上一个功能的bot,现在我正在使用on_voice_state_update()事件测试音频功能,当有人加入频道时,该bot应该播放音频。
我这样写事件:
@bot.event
async def on_voice_state_update(member, before, after):
global bot_voice_status
global tts_status
global vc
if(bot_voice_status == 0 and tts_status == 0 and member.display_name.find("St3veB0T") == -1):
if(before.channel == None):
rand = randint(0, len(os.listdir("audio"))-1)
ix = 0
for filename in os.listdir("audio"):
if(ix == rand):
c = 0
try:
vc = await after.channel.connect()
c = 1
except:
break
if(c == 1):
try:
audio_source = discord.FFmpegPCMAudio((os.path.join("audio",filename)))
vc.play(audio_source, after=lambda e: print('done', e))
while vc.is_playing():
await asyncio.sleep(1)
vc.stop()
await vc.disconnect()
break
except:
await vc.disconnect()
break
ix = ix + 1
此代码的作用是,检查用户是否加入了语音通道,加入了实际的语音通道,然后尝试播放文件夹中的随机音频文件,之后应该离开语音通道。
问题是,当我加入频道时,机器人会加入,但不会播放任何音频,并且不会在终端上写入任何输出或错误。等待一段时间后,我发现该漫游器甚至没有断开与频道的连接。
我现在完全迷失了……我真的不知道我在做什么错。
顺便说一句,我正在Windows计算机上使用python 3.7.3 64位进行测试
更新:
在进行日志记录时,我得到以下警告:
2019-10-18 15:26:39,757:DEBUG:discord.client: Dispatching event socket_raw_send
2019-10-18 15:26:39,932:DEBUG:discord.client: Dispatching event socket_raw_receive
2019-10-18 15:26:39,933:DEBUG:discord.gateway: For Shard ID None: WebSocket Event: {'t': None, 's': None, 'op': 11, 'd': None}
2019-10-18 15:26:39,933:DEBUG:discord.client: Dispatching event socket_response
2019-10-18 15:26:41,605:WARNING:discord.gateway: Shard ID None has stopped responding to the gateway. Closing and restarting.
我正在使用discord.py == 1.2.3和websockets == 6.0和aiohttp == 3.3.0
答案 0 :(得分:0)
也许您没有正确安装 FFMPeG。尝试手动安装
<块引用>https://ffmpeg.org/download.html
这是官方页面,需要下载后粘贴到Local Disk。最后安装它,你需要把它放在 PATH 上,搜索 system properties
(如果你在 Windows 上),然后编辑 Environment Variables
。