-3
@bot.on_message(filters.command('song'))
def songs(_,message):
    msg = message.text.replace(message.text.split(' ')[0], '')
    videosSearch = VideosSearch(msg , limit = 1)
    f = videosSearch.result()
    nani = f['result']
    for link in nani:
        url = link['link']
        video = pafy.new(url)
        audiostreams = video.audiostreams
        best = video.getbestaudio()
        ad = best.download() 
        file = open(ad, 'wb')
        bot.send_document(message.chat.id, file)
        file.close()

我找不到错误请帮忙

file = open(ad, 'wb') TypeError: expected str, bytes or os.PathLike object, not NoneType

4

2 回答 2

1

由于其他两个回复并没有真正解决手头的问题,因此我将在这里插话。


在这些线上:

    ad = best.download() 
    file = open(ad, 'wb')
    bot.send_document(message.chat.id, file)
    file.close()

您将要使用 Pyrogram 发送的结果分配best.download()给。ad由于你得到一个 TypeError ,open()很明显open()没有得到它预期的类型,即 a NoneType。您必须确保已下载某些内容,并且该方法返回您可以使用的值。

print(ad)也许在尝试之前先尝试穴居人的方法并使用open()它。


除此之外:Pyrogram 不支持发送文件表示 ( open())。您可以以字节模式打开文件,读取字节并将其与 BytesIO 一起使用,但是当您的系统上有一个实际文件时,您可以只使用文件的路径:app.send_document(chat_id, "my_file.webm").

请参阅文档以获取app.send_document().

于 2021-06-07T12:55:31.383 回答
0

替换这个:

file = open(ad, 'wb')

有了这个:

file = open('ad', 'wb')
于 2021-06-02T08:22:23.460 回答