【发布时间】:2020-11-12 14:36:36
【问题描述】:
我在 python 中使用 API,当 我向这个 API 发出请求时,服务器必须在频道中发送音频消息。
在文本频道中,我使用了一个 webhook,它为我提供了频道的上下文。我需要这样的东西才能播放音频。
有什么方法可以做到这一点?
【问题讨论】:
标签: python api discord discord.py discord.py-rewrite
我在 python 中使用 API,当 我向这个 API 发出请求时,服务器必须在频道中发送音频消息。
在文本频道中,我使用了一个 webhook,它为我提供了频道的上下文。我需要这样的东西才能播放音频。
有什么方法可以做到这一点?
【问题讨论】:
标签: python api discord discord.py discord.py-rewrite
通过bot发送音频文件后无法播放。
你可以做的是下载音频文件并使用 FFMPEG 播放它
【讨论】:
所以如果我理解正确的话,每次发送 API 调用时,您都希望将声音片段发送到频道?
如果是这种情况,这应该很简单,在你的 API 函数中,在你进行 API 调用之后,你应该创建一个 if 语句来检查 API 返回是 200,然后你应该使用 VoiceState 来获取用户当前的语音通道,或者您可以简单地在代码中硬编码语音通道 ID。
headstart 可能看起来像这样。
voice_channel = ctx.author.voice.channel
vc = await voice_channel.connect()
vc = ctx.voice_client
vc.play(discord.FFmpegPCMAudio(executable="c:/ffmpeg/bin/ffmpeg.exe", source='your_file.mp3'))
await asyncio.sleep(5) # alter this depending upon how long your file will be
await vc.disconnect()
注意,使用此方法您需要将 asyncio 导入文件顶部,并且需要下载 FFMPEG 并使用这部分代码进行链接
vc.play(discord.FFmpegPCMAudio(executable="c:/ffmpeg/bin/ffmpeg.exe", source='your_file.mp3'))
如果您需要知道如何使用 API 查看是否收到 200 响应,一种方法是
if APIReq.status_code == 200:
print("Status Code: " + str(APIReq.status_code))
其中 APIReq 等于您的 requests.get 用于 API 调用的变量名称。
这对您开始有帮助吗?
【讨论】: