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

不一致py,bot不播放任何mp3文件

梁修贤
2023-03-14

免责声明:我已经转发了这个问题,并删除了最初的问题,因为一个人给出了一个愚蠢的答案,降低了这个问题的可见性。

基本上,我正在将我的机器人迁移到discord.py的重写版本。

我正在测试机器人与前一个只有几个功能,现在我测试音频功能与on_voice_state_update()事件,机器人应该播放音频时,有人加入一个频道。

我写了这样的事件:

@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

这段代码的作用是,检查用户是否加入了语音频道,加入了实际的语音频道,然后它试图从文件夹中播放随机音频文件,之后它应该离开语音频道。

问题是,当我加入一个频道时,机器人加入,但不播放任何音频,也不在终端上写入任何输出或错误。等待了一段时间后,我发现机器人甚至没有断开与频道的连接。

我完全迷失在这一点上。。。我真的不知道我做错了什么。

顺便说一句,我正在用python 3.7在Windows机器上进行测试。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与webSocket==6.0和aiohttp==3.3.0

共有1个答案

燕元明
2023-03-14

也许你有FFMPeG安装不当。尝试手动安装

https://ffmpeg.org/download.html

这是官方页面,您需要下载并粘贴到本地磁盘上。最后,在安装它之前,您需要将它放在路径上,搜索系统属性(如果您在Windows上),并编辑环境变量

 类似资料:
  • 我在我的discord机器人上遇到了一个问题。命令不起作用。我认为代码不是问题。除了命令外,一切都很完美。不和谐,如果我使用!在这里测试mytext,什么都不会发生。 提前谢谢你!

  • null 关键是我使用jLayer的实现不起作用:当我执行play-pause-resume时,音频被暂停,但随后从文件中的随机点恢复。 我该怎么修好它?

  • 如果我执行类似于它工作正常。 但是,我找不到一种方法使其适用于ping。我尝试了机器人ID和名称。我的机器人ID代码: 有人能帮忙吗?

  • 我无法在我的MediaPlayer应用程序中运行某个特定的流。我知道该应用程序可以工作,但当我决定更改我的流媒体服务时,新的URL无法工作。将这个URL插入网络浏览器确实有效。以下是我的相关代码: 然后,在onPrepared()中: 这是我的LogCat(在装有Android 4.3的三星Galaxy Nexus上运行): 有什么想法吗? 编辑 我做了更多的挖掘,并为上面提供的链接设置了一个Ht

  • 我有一个不和谐的机器人写在不和谐的js。我有一个命令,在语音频道播放mp3文件。 如果我在我的windows pc上运行bot,一切都会正常工作。机器人加入频道,播放文件,然后再次离开。如果我在我的Ubuntu18.04虚拟机上运行bot,bot会在不播放文件的情况下加入并立即断开连接。 mp3文件的路径是绝对的。我已经尝试使用connection.play文件(路径)代替相同的问题。我尝试使用o

  • 我的目标是创建一个discord bot,该bot使用用户发送的相同消息进行响应,如果用户发送文件,则bot将发送该文件的链接。 我可以让两个部分分开工作,但在一起我只是遇到了问题(见底部),在我目前的代码中只有独立文件发送工作,文本消息没有,如果你有文本文件,文件链接将由机器人发送但是文本不会。如果我把第二部分放在上面,那么我得到的基本上是完全相反的,只有文本被发送,没有文件。 我的代码: 底部