我想知道是否有办法让我的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)
在这种情况下,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)
你也可以在这里读到它
我在我的机器人中使用的代码:
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()
这是一种在歌曲完成后断开连接的方法(删除后的)。
在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)。问题是我什么时候启动我的应用程序