discord.py - on_ready 上的 discord.py Music Bot 加入指定频道并使用 youtube-dl 流式传输 mp3
问题描述
当机器人准备好时,如何使用 youtube-dl 播放 mp3 文件中的流音频?我已经知道如何使用 id 连接到一个频道,但我不知道如何在这个频道中播放我有从官方 basic_voice.py 示例复制的 YTDLSource 类,现在我想在 on_ready 上执行此操作
player = await YTDLSource.from_url(url, loop=self.bot.loop, stream=True) ctx.voice_client.play(player, after=lambda e: print('Player error: %s' % e) if e else None)
而无需扩展或其他东西。
解决方案
我不完全理解您要做什么,但是您可以将视频下载为 mp3,然后使用voice_client = discord.utils.get(ctx.bot.voice_clients, guild=ctx.guild)
(client.voice_clients - Api docs)您可以获得所连接服务器中的语音客户端对象。虽然您需要先获取公会,因为当有人发送命令或消息时您没有这样做,但您可以使用bot.get_guild(#Server id you want to do this in)
原始 discord.utils.get 函数中的公会参数并将其作为公会参数传递
然后使用voice_client.play(discord.FFmpegPCMAudio(##Mp3 File Path))
(VoiceClient.play() - Api docs)将 mp3 文件播放到频道
您可以在 on_ready 函数中完成所有这些操作
推荐阅读
- dart - 返回上一个活动时如何返回数据?
- android - Google Play 商店:新的 SMS 权限政策和表格。(完全删除权限)
- php - 将 while 循环内的特定计数器发布到另一个页面
- php - 通过电子邮件发送消息 LARAVEL
- java - Modelmapper TypeResolver 从版本 0.6.3 到 2.3.2 的变化
- hibernate - 创建类路径资源中定义的名称为“requestMappingHandlerAdapter”的 bean 时出错。当想启动我的应用程序时出现此错误
- android - 添加片段的困惑
- r - 在闪亮的应用程序中生成交互式 Rmarkdown 报告的问题
- go - models.go: res 声明但未使用
- laravel - 带有csrf的Laravel表单中的Javascript问题