python - 在discord.py中是否有类似于discord.js中的streamTime的东西?

标签 python discord.js discord.py

我使用包 youtube_dl 来执行播放音乐命令。 一段时间后,现在我一直在研究倒带和前进命令,我已经使用 ffmpeg 选项实现了基本的搜索命令,所以剩下的唯一的事情就是找到轨道的位置由机器人播放,这样我就可以寻找(位置+-)去到轨道的那个位置。我唯一想到的就是像这样计算轨道的进度。

async def count_progress(self):
    try:
        if not self.on_count:
            self.on_count = True
            while self.is_playing:
            await asyncio.sleep(0.99)  
            self.queue._queue[0].progress += 1
            self.on_count = False
    except (AttributeError, IndexError):
        self.on_count = False

我发现discord.js有一个叫做streamTime的东西,discord.py中有类似的东西吗?如果没有,除了计算进度之外,还有什么更好的方法吗?

更新:我已经忘记了我发表的这篇文章,但自从我找到了解决这个问题的一个非常好的解决方案。

我所做的是创建一个自定义类来计算播放器读取的字节数。 (感谢这个issue我做的)

class CalculableAudio(discord.PCMVolumeTransformer):
    def __init__(self, original, start, volume: float):
        self.played = start
        super().__init__(original, volume=volume)

    def read(self) -> bytes:
        self.played += 20 # reading 20 frames at a time (1 sec = 1000 frames)
        return super().read()

然后每当我想找到播放的秒数时,我只需要这样做:

seconds_played = ctx.voice_client.source.played//1000

最佳答案

这里有一些东西可供您使用!

TL;DR - 不,discord.py 中从来不存在这样的事情,而且永远不会。


  • 在discord.js v12中曾经有一个 StreamDispatcher 其中有一个 StreamDispatcher.streamTime 属性在 v13 (discord.js) 中被进一步删除,并按照 this commit 重新添加 在官方 Discord.js 存储库上。
  • 谈到您的主要问题,Discord.py停止使用,从现在起将不会收到开发者的任何更新,而之前它是这样做的无论如何,没有任何此类方法来访问客户端流的流时间(语音/视频 - 不适用于机器人用户)。您可以引用documentation's VoiceClient 部分并亲自检查在任何时候都不存在这样的属性/方法。

虽然Python本身是为你服务的!您可以声明一个开始播放时间的变量,然后从现在的时间中减去它!

# when command is first used save it to a database or as a variable simply :P starttime = datetime.datetime.utcnow()
@client.command()
async def playtime(ctx):
    time = datetime.datetime.utcnow() - starttime
    time = str(uptime).split(".")[0]
    embed = discord.Embed(title="Total playtime", description=f"**time** = " + ''  + time +'')
    await ctx.send(embed=embed)

关于python - 在discord.py中是否有类似于discord.js中的streamTime的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69013764/

相关文章:

python - 如何让我的 Discord 机器人看起来像是正在打字?

python - 如果在python中发生错误,则处理异常

python - 如何在eclipse中暂停python执行并返回交互式提示

javascript - 你如何在 discord.js 中定义用户的颜色?

javascript - Discord.js 如何切片链接

javascript - 如何在以相同符号开头和结尾但每次之间的数字不同的文本中搜索值? NodeJS

python - django-environ DATABASE_URL 格式

python - 从 Atom 运行 Python

ffmpeg - 如何使用 discord.py/ffmpeg 应用音频过滤器

python - Discord.py,如果它不存在,我该如何让机器人创建一个 channel ,但如果它存在,它就会继续执行它的任务?