【发布时间】:2021-11-06 08:45:27
【问题描述】:
如何下载用户在聊天中发送的文件?
例如
我需要从 Telegram 下载文件 moonloader.log 到我的本地路径 C:\text-folder\moonloader.log 并阅读它。
到目前为止的代码
def checkFile(path):
if os.path.isfile(path):
f = open(path, 'r')
log = f.read()
print('начинаю проверку...')
# check log
result = re.search('MoonLoader v.(.+) loaded.', log)
if result:
moonlog_version = result.group(1)
print('• Версия moonloader: ' + moonlog_version)
for err in range(0, len(errors)):
for i in errors[err]:
print(' • Ошибка: ' + errors[err][i])
# ON RECEIVE FILE
@dp.message_handler(content_types=types.ContentType.DOCUMENT)
async def fileHandle(message: types.File):
await message.reply(text='файл получен, начинаю поиск ошибок...')
## LOAD FILE CODE
checkFile(LOADED FILE PATH)
更新代码
我尝试关注answer of hc_dev并添加了下载方法。但不确定如何从message 获取File 或file_path。我试过这个:
def download_file(file: types.File):
file_path = file.file_path
destination = r'C:\\Users\\admin\\Desktop\\moonlog inspector\\download'
destination_file = bot.download_file(file_path, destination) # ON RECEIVE FILE
@dp.message_handler(content_types=types.ContentType.DOCUMENT)
async def fileHandle(message: types.Document):
await message.reply(text='файл получен, начинаю поиск ошибок...')
## LOAD FILE CODE
download_file(message.file_id)
但是运行时会报错:
'Message' 对象没有属性 'file_id'
【问题讨论】:
-
download_file()将文件从电报服务器下载到本地磁盘怎么样。这种方法似乎是Telegram-API as guided in Downloading Files 的门面
标签: python file download telegram-bot aiogram