Как я знаю метод sendPhoto не соответствует этот вопрос.
Я хочу отправить сообщение с одной фотографией и 3 встроенными кнопками с ним.
Это реально? Или я должен отправить два сообщения (фото и кнопки)
Я использую php
Решение
Вы можете использовать это
if($text == ‘/send’)< bot(‘sendPhoto’,[ ‘chat_id’=>$update->message->chat->id, ‘photo’=>new CURLFile(«path.PNG»), ‘caption’=>»HELLO», ‘parse_mode’=>»MarkDown», ‘disable_web_page_preview’=>true, ‘reply_markup’=>json_encode([ ‘inline_keyboard’=>[ [[‘text’=>’button 1′,’callback_data’=>’any’]], [[‘text’=>’button 2′,’callback_data’=>’any’]], [[‘text’=>’button 3′,’callback_data’=>’any’]], ] ]) ]); >
Другие решения
Других решений пока нет …
Источник: web-answers.ru
Пишем Telegram чат бота на Java
Telegram Bot API sendPhoto / Документы | Джава
Я хочу сделать простого бота для Telegram. Не получается с методом — sendPhoto (URL). При использовании онлайн-команды бот должен отправить пользователю картинку. Само изображение динамическое, поэтому я использую URL-адрес sendPhoto.
Ошибки, которые я получаю при запуске команды — / online:
org.telegram.telegrambots.exceptions.TelegramApiRequestException: Error sending photo: [400] Bad Request: chat not found at org.telegram.telegrambots.api.methods.send.SendPhoto.deserializeResponse(SendPhoto.java:153) at org.telegram.telegrambots.bots.DefaultAbsSender.sendPhoto(DefaultAbsSender.java:210) at SimpleBot.sendImageFromUrl(SimpleBot.java:62) at SimpleBot.onUpdateReceived(SimpleBot.java:52) at java.util.ArrayList.forEach(ArrayList.java:1249) at org.telegram.telegrambots.generics.LongPollingBot.onUpdatesReceived(LongPollingBot.java:27) at org.telegram.telegrambots.updatesreceivers.DefaultBotSession$HandlerThread.run(DefaultBotSession.java:301)
Есть мысли как решить эту проблему. Спасибо =)
Источник: question-it.com
Отправить фото с помощью telegram.bot
Но я не знаю, что ожидается в параметре string photo . Должен ли я преобразовать свое изображение в строку base64 или передать путь изображения или. В настоящее время мой код выглядит следующим образом
Но это вызывает исключение
Telegram.Bot.Types.ApiRequestException: [Ошибка]: неверный запрос: файл send должен быть непустым
Mr.Logical 17 нояб. 2015, в 15:10
Поделиться
В репозитории NuGet нет пакета Tele Bot . Какое настоящее название пакета вы используете? Это TeleBotDotNet или telegram.bot ?
rufanov 17 нояб. 2015, в 13:22
Какие у вас проблемы? Вы получаете исключение или что еще?
Il Vic 17 нояб.
2015, в 13:24
я не недооцениваю поставить атрибут String Photo на эту функцию
Mr.Logical 17 нояб. 2015, в 13:26
Пишем Telegram bot на Java | Spring. Урок 3: Смайлики, отправка файлов.
Предположение: поток должен сбросить свою Position в начало. Используйте ms.Position=0 прежде чем передавать его в SendPhoto . Если это не сработает. Вы отладили и проверили, что MemoryStream содержит данные изображения?
PHeiberg 17 нояб. 2015, в 18:33
Спасибо! Оно работает!
Max 06 дек.
2015, в 02:45
Показать ещё 3 комментария
Поделиться:
telegram-bot
3 ответа
В соответствии с документацией по исходному коду вы должны передать «file_id как String для повторной отправки фотографии, которая уже находится на серверах Telegram, или загрузите новую фотографию с помощью multipart/form-data». Я предполагаю, что комментарий параметра является общим и что эта перегрузка принимает файл file_id существующего файла на сервере.
/// /// Use this method to send photos. On success, the sent Message is returned. /// /// Unique identifier for the target chat /// Photo to send. You can either pass a file_id as String to resend a photo that is already on the Telegram servers, or upload a new photo using multipart/form-data. /// Optional. Photo caption (may also be used when resending photos by file_id).
/// Optional. If the message is a reply, ID of the original message /// Optional. Additional interface options. A JSON-serialized object for a custom reply keyboard, instructions to hide keyboard or to force a reply from the user. /// On success, the sent Message is returned.
public async Task SendPhoto(int chatId, string photo, string caption = «», int replyToMessageId = 0, ReplyMarkup replyMarkup = null)
public async Task SendPhoto(int chatId, FileToSend photo, string caption = «», int replyToMessageId = 0, ReplyMarkup replyMarkup = null)
принимает FileToSend , который содержит имя файла и поток. Используйте эту вторую перегрузку для загрузки новых фотографий.
Отказ от ответственности: я не использовал API, поэтому это чисто выводы из проверки исходного кода.
Источник: overcoder.net