Я загружаю файлы с помощью бота Telegram, и мой текущий код выглядит так:
И когда я это сделаю:
file.download()
Он загружает файл в текущий каталог, но я хочу загрузить все файлы в папке. Я поискал здесь документацию: https: // python- telegram-bot.readthedocs.io/en/stable/telegram.file.html, и действительно, я могу установить собственный путь для загрузки файлов в этой папке. Однако, когда я использую свой текущий код, я получаю ошибку разрешения:
with open(filename, ‘wb’) as fobj: PermissionError: [Errno 13] Permission denied: ‘C:/Users/User/Desktop/python/projects/Telegram-Database/files’
И я не знаю почему. Я попытался заново создать папку и перезапустить программу, но всегда получаю одну и ту же ошибку. Я искал эту конкретную ошибку в боте Telegram, но ничего не обнаружилось. Не могли бы вы помочь?
Источник: question-it.com
СКАЧАТЬ ФОТО ► Телеграм бот сохранение фото на сервере
Как я могу получить файл в python-telegram-bot
У меня проблема с сообщениями файлов в боте телеграммы python. как я могу получить файл и прочитать этот файл? Или сохраните.
user13601083 08 июн ’20 в 04:29 2020-06-08 04:29
2020-06-08 04:29
2 ответа
- Зарегистрируйте обработчик, который слушает Document
- получить File объект из обновления (внутри слушателя, использующего get_file )
- тогда просто позвони .download() скачать документ
Вот пример кода, с которого можно начать:
user11984670 08 июн ’20 в 10:59 2020-06-08 10:59
2020-06-08 10:59
Я установил своего телеграмм-бота в pythonanywhere с помощью webhook.
Кроме того, я использую на своем компьютере программу py Programm, которая регулярно записывает некоторые обновления в файл .txt.
Пользователь должен иметь возможность отправить команду типа /update боту телеграммы, и бот должен проанализировать эту информацию в моем локально сохраненном файле .txt и ответить со значением файла.
Я могу отправлять команды, которые возвращают простые сообщения, когда я пишу боту Telegram. Но можно ли также подключить бота на pythonanywhere к моему локально запущенному приложению, чтобы он отвечал, как указано выше?
Источник: stackru.com
Python-сообщество
- Начало
- » Python для экспертов
- » telegram bot
#1 Июль 12, 2021 13:44:43
telegram bot
Добрый день.
Пишу бот отправка сообщение на почту с вложением.
Могу из бота сохранить вложение локально и потом сохраненные файлы отправить вложением на почту.
Но как миновать фазу сохранить вложения перед отправкой на почту локально, а сразу, получив из бота ссылку на файл бота типа ( http://api.telegram.org/file/bot/ )
How to Make $1000+ a Day with a SLIPPAGE Bot (Easy ETH Arbitrage MEV Bot Tutorial with Uniswap)
отправить вложением на почту?
Для этого могу использовать yagmail или email + smtplib
#2 Июль 12, 2021 15:16:56
telegram bot
например такой код, как модифицировать.
#3 Июль 12, 2021 15:23:12
telegram bot
#4 Июль 12, 2021 15:25:54
telegram bot
Как использовать в качестве вложения почтового сообщения не файл на диске, а ссылку типа
( http://api.telegram.org/file/bot/ )
.
Отредактировано sanblchsun (Июль 12, 2021 15:26:06)
#5 Июль 12, 2021 23:54:58
telegram bot
Этот файл хранится в облаке Telegram’а.
https://core.telegram.org/bots/api#file
Ссылку ты не можешь отправлять. Во-первых, в ней секрет находится, во-вторых, она действует временно.
Для отправки файла его надо скачать сначала.
Так что бот на хостинге должен скачать файл на хостинг, потом послать этот файл по почте, а потом стереть файл с хостинга.
#6 Июль 13, 2021 12:34:16
telegram bot
py.user.next
Добрый день, про секретный токен я в курсе и если я передаю ссылку в рамках своего приложения, то какая проблема? Это обычная ссылка и я конечно не планирую ее передавать в теле письма,
Просто хочу вместо этого примера, где файл считывается с диска хостинга:
try: with open(file_to_attach, «rb») as fh: data = fh.read()
Файл считывался прямо из облака Telegram’а.
Я такого способа не нахожу в интернете. Трудно поверить, что сие не возможно. Что же буду искать.
#7 Июль 13, 2021 18:53:29
telegram bot
sanblchsun
Но как миновать фазу сохранить вложения перед отправкой на почту локально, а сразу, получив из бота ссылку на файл бота типа ( http://api.telegram.org/file/bot/ )
не знаю есть ли такая возможность через API,попробовать взять ссылку на пост, в самом телеграмме это когда нажимаешь правой кнопкой мыши на сообщение и там есть такой пункт,только вроде для открытых чатов, ну и ссылку уже передавать по почте
#8 Июль 14, 2021 01:27:46
telegram bot
sanblchsun
Это обычная ссылка и я конечно не планирую ее передавать в теле письма
По-моему, ты даже не понимаешь, что такое письмо. Нет никакой разницы, где ты передаёшь ссылку, в теле письма или во вложении к письму. Она одинаково видна и там и там, потому что письмо — это единое целое. Когда письмо читается программным клиентом, оно берётся как единое целое и по знакам раскладывается на части, чтобы просто красиво смотреться.
Так появляются поля “от кого”, “кому”, “тема” и другие, есть тело письма, и отдельно идут вложения. При этом оно как было целым, так и остаётся.
sanblchsun
Трудно поверить, что сие не возможно.
Думаю, это возможно, так как используется протокол HTTP, но закачивание всего файла в оперативную память может привести к тому, что её не хватит. Поэтому сначала файл нужно куда-то сохранить, скачивая его по частям, а потом уже оттуда, где он сохранён и не исчезнет в течение часа, передавать его дальше.
#9 Июль 14, 2021 16:03:30
telegram bot
py.user.next
По-моему, ты даже не понимаешь, что такое письмо. Нет никакой разницы, где ты передаёшь ссылку, в теле письма или во вложении к письму. Она одинаково видна и там и там, потому что письмо — это единое целое. Когда письмо читается программным клиентом, оно берётся как единое целое и по знакам раскладывается на части, чтобы просто красиво смотреться.
Так появляются поля “от кого”, “кому”, “тема” и другие, есть тело письма, и отдельно идут вложения. При этом оно как было целым, так и остаётся.
Ты даже не понял, что я спрашивал. Это оставим.
py.user.next
Думаю, это возможно, так как используется протокол HTTP, но закачивание всего файла в оперативную память может привести к тому, что её не хватит. Поэтому сначала файл нужно куда-то сохранить, скачивая его по частям, а потом уже оттуда, где он сохранён и не исчезнет в течение часа, передавать его дальше.
А это интересно!
Какая разница, как я буду передавать файл-вложение в почту скачивая с диска хоста или с HTTP/сылки. Ведь тут не идет о построчном скачивании, а в данном случае получаешь файл полностью и передаешь его на почтовый сервер. И в любом случае используется объем оперативной памяти одинаково. Как думаешь?
Отредактировано sanblchsun (Июль 14, 2021 16:11:49)
#10 Июль 15, 2021 03:28:37
telegram bot
sanblchsun
Какая разница, как я буду передавать файл-вложение в почту скачивая с диска хоста или с HTTP/сылки.
Ещё раз тебе пишу: 1) в хостинговой ссылке нет никакого токена для управления ботом (вплоть до стирания этого бота); 2) хостинговый файл никуда не денется сам по себе, когда там пройдёт час, пять часов, неделя.
Ты просто файл берёшь с Telegram’а и отсоединяешь его от Telegram’овских правил хранения и передачи файла. Там эти правила зависят от того, сколько пользователей у Telegram’а и сколько пользователей там одновременно что-то качают. Поэтому он и ограничения вводит.
sanblchsun
Ведь тут не идет о построчном скачивании, а в данном случае получаешь файл полностью и передаешь его на почтовый сервер.
Он может не поместиться в памяти, если он на несколько гигабайт, например. Также сетевое соединение может быть разорвано и файл нужно будет докачивать, а не качать заново. Telegram не будет тебя обслуживать. Он подождёт немножко и скинет тебя нафиг. Если ты не докачал там что-то, ему пофигу.
Источник: python.su