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

有没有办法让我的不和谐机器人在播放完一首歌后与语音频道断开连接?

赫连坚
2023-03-14

我想知道是否有办法让我的discord机器人在播放youtube视频的音频后离开语音频道。我试着使用睡眠(视频的持续时间),但是为了获取和下载视频来播放,我使用了pafy,它给出了视频的持续时间,但是是00:00:00格式,它作为字符串而不是整数。我在=lamda e:await vc之后将代码更改为diconnect。断开连接,但它给我一个错误,在异步函数外面说“await”。我播放音乐的代码如下:

channel = message.author.voice.channel
vc = await channel.connect()
url = contents
url = url.strip("play ")
video = pafy.new(url)
await message.channel.send("Now playing **%s**" % video.title)

audio = video.getbestaudio()
audio.download()
duration = video.duration
player = vc.play(discord.FFmpegPCMAudio('%s.webm' % video.title), after=lambda e: await vc.disconnect)

共有3个答案

党博超
2023-03-14

在这种情况下,vc。disconnect()是一个必须等待的协同程序。discord player的after函数不能等待这样的异步函数。相反,请使用以下内容:

def my_after(error):
coro = vc.disconnect()
fut = asyncio.run_coroutine_threadsafe(coro, client.loop)
try:
    fut.result()
except:
    # an error happened sending the message
    pass
voice.play(discord.FFmpegPCMAudio(url), after=my_after)

你也可以在这里读到它

章玮
2023-03-14

我在我的机器人中使用的代码

stop_event = asyncio.Event()
loop = asyncio.get_event_loop()
def after(error):
    if error:
        logging.error(error)
    def clear():
        stop_event.set()
    loop.call_soon_threadsafe(clear)

audio = PCMVolumeTransformer(discord.FFmpegPCMAudio(file_path), 1)
client.play(audio, after=after)

await stop_event.wait()
await client.disconnect()
郑承恩
2023-03-14

这是一种在歌曲完成后断开连接的方法(删除后的)。

vc.play()之后添加

    while vc.is_playing():
        await sleep(1)
    await vc.disconnect()
 类似资料:
  • 我试图做一个程序来创建一个无尽的循环,例如: 但是主要的问题是一个机器人听不到另一个机器人的声音,所以这不起作用。。。 有没有办法让机器人听另一个机器人的?提前感谢!:)

  • 我希望我的不和谐机器人加入语音频道。但是我遇到了一个问题,每当我想让它加入风投时,什么都不会发生——甚至没有错误。我尝试过SO/Git的其他解决方案,但没有一个适合我(下面有一个)。 编辑:解决了!问题是:没有不和。已安装py[语音]模块。解决方案:

  • 我正在努力让我的机器人进入语音频道,我已经阅读了这里的很多帖子,但没有一篇能够解决我的问题,我正在尝试让我的机器人复制yt视频的声音,但它甚至没有加入,我不知道该怎么办,下面是代码:

  • 我需要知道如何让不和谐机器人断开语音频道。目前这是我加入语音频道的代码 我需要密码来断开与语音频道的连接

  • 我的机器人加入了一个语音频道,然后离开并发送消息“播放正常!”,但不播放mp3。我在Windows上,我已经检查过可以通过命令行用ffmpeg播放mp3文件。有人知道怎么了吗? 更新:我为“finish”事件更改了“speaking”,还尝试了评论中的音频文件。现在,机器人加入语音频道,在mp3播放时间内保持不变,然后离开语音频道,但还没有声音。 更新2:我现在将ffmpeg添加到我的路径中。机器

  • 我正在制作音频播放器(android)。问题是我什么时候启动我的应用程序