Я пишу бота для телеграмм (на Python), который отправляет изображения. Я отправляю каждое изображение по несколько раз, и в документации рекомендуется отправлять file_id файла, который уже хранится на сервере Telegram.
Но я не могу найти никакой документации о хранении файла на сервере и получении file_id. Я могу попробовать отправить изображение (себе? Боту?) И получить его file_id, но это кажется ооочень хакерским.
Комментарии (1)
Кто-нибудь знает, как загрузить изображение с помощью VBA?
25.06.2018 22:15
Оператор pass в Python — это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции — это способ манипулировать массивами и играть с массивами данных. Благодаря.
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний.
Все о массиве Dependency и его связи с useEffect.
Перейти к ответу Данный вопрос помечен как решенный
Ответы 2
Ответ принят как подходящий
Пишем Telegram бота на Python + Загружаем Telegram бота на сервер(хостинг)
Хорошо, я понял . вам нужно отправить изображение один раз, но получить file_id несложно:
msg = bot.send_photo(chat_id=chat_id, photo=open(«filename», «rb»)) file_id = msg.photo[0].file_id . bot.send_photo(photo=file_id)
25.06.2018 23:58
Конечно! Вы можете отправить фото с диска или с URL. В противном случае, если вы отправите фото боту из клиента, вы получите file_id и file_path для другого размера фотографии в update.message.photo.
Тогда вы можете получить реальный файл по ссылке: https://api.telegram.org/file/bot:TOKEN:/photos/file_3.jpg Также вы можете получить массив фотографий с file_id: https://api.telegram.org/bot:TOKEN:/getFile?file_id=AAAAAA
Пример полученных данных с фото:
, , , ], ‘caption’: ‘comment_to_my_uploaded_photo’>>
Наконец, пример моего простого бота для отправки случайного изображения с URL:
#!/usr/bin/python3 from telegram.ext import Updater, Filters from telegram.ext import CommandHandler, CallbackQueryHandler, MessageHandler from telegram import InlineKeyboardButton, InlineKeyboardMarkup import requests def start(bot, update): update.message.reply_text(‘Hello! I can show an awesome images for you!’, reply_markup=main_keyboard()) def meow(bot, update): query = update.callback_query photo = requests.get(‘http://aws.random.cat/meow’).json() bot.send_photo(caption = «Meow! :)», photo=photo[‘file’], chat_id=query.message.chat_id, message_id=query.message.message_id, reply_markup=action_keyboard()) def wooff(bot, update): query = update.callback_query photo = requests.get(‘https://dog.ceo/api/breed/husky/images/random’).json() bot.send_photo(caption = «Bwoof! :)», photo=photo[‘message’], chat_id=query.message.chat_id, message_id=query.message.message_id, reply_markup=action_keyboard()) def like(bot, update): query = update.callback_query bot.send_message(text='<>Likewise!’.format(u’U0001F60A’), chat_id=query.message.chat_id, reply_markup=main_keyboard()) def great(bot, update): query = update.callback_query bot.send_message(text='<>Great!’.format(u’U0001F60B’), chat_id=query.message.chat_id, reply_markup=main_keyboard()) def main_keyboard(): keyboard = [[InlineKeyboardButton(«Get Meow», callback_data=’meow`’), InlineKeyboardButton(«Get Wooff», callback_data=’wooff’)]] return InlineKeyboardMarkup(keyboard) def action_keyboard(): keyboard = [[InlineKeyboardButton(«Like!», callback_data=’like’), InlineKeyboardButton(«Great!», callback_data=’great’)]] return InlineKeyboardMarkup(keyboard) updater = Updater(‘XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX’) updater.dispatcher.add_handler(CommandHandler(‘start’, start)) updater.dispatcher.add_handler(CallbackQueryHandler(meow, pattern=’meow’)) updater.dispatcher.add_handler(CallbackQueryHandler(wooff, pattern=’wooff’)) updater.dispatcher.add_handler(CallbackQueryHandler(like, pattern=’like’)) updater.dispatcher.add_handler(CallbackQueryHandler(great, pattern=’great’)) updater.dispatcher.add_handler(MessageHandler(Filters.text|Filters.photo, start)) updater.start_polling()
Источник: reddeveloper.ru
КАК ЗАПУСТИТЬ TELEGRAM БОТА ИЛИ ПАРСЕР НА СЕРВЕРЕ
Как отправить большие файлы с URL на бота Telegram?
У меня есть файлы большого размера (в форматах MP4 и Zip ), и я хочу отправить их в мой чат боттом Telegram, я использовал следующий код:
file_get_contents(‘https://api.telegram.org/bot[[app:token]]/sendDocument?chat_id=24523586
Но он просто может отправлять файлы с небольшими размерами, менее 50 МБ! Но я знаю, что нет ограничений на размер файлов для документов, которые отправляются file_id . Вы можете увидеть эту страницу
Теперь, как я могу сделать file_id для моих файлов? Мои файлы загружаются на моем сервере, и я использую PHP.
Ali YQB 06 апр. 2017, в 16:08
Поделиться
Поделиться:
telegram-bot
php-telegram-bot
3 ответа
API Telegram bot может отправлять файлы менее чем на 20 МБ с помощью url param, вы должны искать Отправка файлов. Если вы хотите отправить файлы размером 20-50 МБ, вы должны загрузить и повторно загрузить его на сервер API Telegram bot.
Вы можете сослаться на этот простой код
$curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => ‘https://api.telegram.org/bot131210513:AXXXXXX/sendDocument?caption=Hello+World true, CURLOPT_HTTPHEADER => [ ‘Content-Type: multipart/form-data’ ], CURLOPT_POST => true, CURLOPT_POSTFIELDS => [ ‘document’ => curl_file_create(‘/etc/hosts’, ‘plain/text’, ‘Hosts-file.txt’) ] ]); $data = curl_exec($curl); curl_close($curl);
Sean 09 апр. 2017, в 04:02
Поделиться
Вы можете установить pwrtelegram на свой сервер.
Затем просто переключите URL-адрес API, и вы сможете загрузить до 1,5 ГБ файлов с помощью своего бота. Это единственный возможный путь. Подробнее см. Ссылку. Кроме того, вы не можете проходить в любом случайном file_id , поскольку Telegram не отправит его.
Вы можете передать файл file_id, который ранее был загружен вашим ботом. Чтобы обойти предел, используйте метод выше. Он работает очень хорошо.
Mohammed Sohail 07 апр. 2017, в 09:21
Поделиться
спасибо за помощь 🙂 есть ли простой источник PHP для отправки файлов для PWRTelegram?
Ali YQB 08 апр. 2017, в 18:15
Mohammed Sohail 10 апр. 2017, в 07:25
На самом деле просто переключите URL-адрес APi на api.pwrtelegram.xyz и все готово
Mohammed Sohail 10 апр. 2017, в 07:26
извините, я переключаю URL-адрес APi на api.pwrtelegram.xyz, но он не работает!
Ali YQB 06 май 2017, в 10:11
Показать ещё 2 комментария
Во-первых, вы должны отправить свой файл своему боту, а затем получить файл.
После этого вы можете просто использовать fileID для отправки файлов, и таким образом загрузка будет на сервере Telegram, а не на вашем. Конечно, вы можете отправлять файлы с вашего собственного сервера, но этот метод приведет к снижению скорости для вашего бота.
Обратите внимание, что когда вы отправляете файл своему боту и получаете fileID, с этого момента файл можно сразу отправить без необходимости хранить файлы на вашем собственном сервере.
Вам не нужно делать fileID.
Все, что вам нужно, это отправить файл боту и дать боту узнать fileID и сохранить его где-нибудь в будущих передачах.
Naser.Sadeghi 06 апр. 2017, в 20:00
Поделиться
Ещё вопросы
- 1 Нужна помощь, создав диалог с 2 NumberPickers
- 0 Странная проблема со смещенной вершиной в jquery
- 1 Spring data jpa + объединяет 2 таблицы
- 0 ScrollTop, перенаправляющий на домашнюю страницу
- 1 Как получить простой список из Android LiveData >?
- 0 JQuery запускающее действие при загрузке страницы
- 0 Перетащите один div снова и снова к следующему div
- 1 Передача параметров через URL в C # ASP.net
- 0 Проблемы с Backbone.js и Require.js
- 0 Отображение данных из двух таблиц в Java MySQL
- 0 Как добавить нового пользователя в Kamailio, используя PHP shell_exec?
- 1 Как получить имя схемы для sysobjects при запросе базы данных сервера sql
- 1 Выбор по индексу внутри выбора d3
- 1 Repmat в Python v / s MATLAB
- 0 функция PHP при загрузке страницы
- 0 Как выполнить запрос, используя класс Zend_Db_Table_Abstract?
- 1 Вход на веб-страницу из Java
- 0 Отправлять почту всякий раз, когда журнал очищается в Magento
- 1 Передача никогда не выполняется при остановке приложения
- 0 карусель css thumb останавливается на 0
- 1 unregisterReceiver (получатель) в onPause заставляет получателя не регистрироваться
- 0 Как настроить полосу прокрутки для отображения только в одном div
- 0 Попытка приравнять struct [array] .variable к символу, которому он соответствует из ввода / вывода [duplicate]
- 1 умножить строковый элемент на элемент int из двух массивов Java
- 1 Выпадающий список выбора на следующие 10 лет
- 0 указать порядок полей в сообщении FIX, используя QuickFIX
- 0 Использование директивы для присоединения объекта с доступом к области видимости к элементу HTML
- 0 Невозможно отобразить php на html-странице
- 1 Я имею IllegalArgumentException в моем бобе
- 0 Firebase + Angularjs заказать
- 0 как отобразить моих пользователей из firebase с помощью angularjs
- 1 js Дата изменения 10 октября (BST) [копия]
- 0 Динамический метатег с angularJS
- 0 Автоматически генерировать строки с разными датами
- 1 Angular CLI использует SystemJS?
- 1 Соглашение об именовании свойств навигации в Entity Framework
- 0 Как сравнить две даты?
- 0 C ++. как читать из файла и сопоставлять с вводом
- 0 Rails — Получить URL-адрес Paperclip с помощью SQL-запроса
- 0 выбранный параметр не отображается в раскрывающемся списке Angularjs
- 0 Переключить расширяемый фон при нажатии
- 1 Разница между getNamedItem () и getAttribute ()?
- 0 C ++ Array передается по ссылке, но как это понять?
- 0 Все `идентификаторы` всегда из последнего объекта [дубликата]
- 0 пространство имен против соглашения об именах
- 1 Связывание кода начальной загрузки с файлом .aspx.cs
- 0 Laravel пытается сохранить HTML в базе данных
- 0 Элементы становятся размытыми в Flexslider
- 1 оператор linq, если users.Claims содержит утверждения, равные параметрам (LINQ)
- 0 Хранить объемные изображения в $ localStorage — Angular JS
Источник: overcoder.net
UploadFile Telegram bot API
Как я могу загрузить файл через WebClient.UploadFile на сервера Telegram? И потом отправить его пользователю?
Отслеживать
задан 16 июн 2018 в 20:59
user290321 user290321
Уважаемый, ну вы серьёзно? На ruSO куча примеров отправки запросов. Лезем в документацию и смотрим по какому адресу отправлять запрос, далее смотрим метод, который отправит нам файл, видим, что он принимает InputFile. В итоге видим адрес, нужный метод и тело запроса должно быть в формате multipart/form-data . Ну и далее поиск. Я так понимаю, что это все трудно сделать?
16 июн 2018 в 21:23
Я создал вопрос, чтобы самому ответить на него
– user290321
16 июн 2018 в 22:08
Ну тогда вы вопрос грамотно составляйте, вот я зашёл и вижу загрузить файл через WebClient.UploadFile . Сразу в голове «ага, человеку не нужны сторонние плагины», а тут на тебе, ответ в виде использования плагина, а не WebClient.UploadFile из вопроса.
Источник: ru.stackoverflow.com