Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2017, 12:30   #1
PTyTb32
Форумчанин
 
Регистрация: 06.10.2013
Сообщений: 216
По умолчанию Telegram API

Привет, пишу програмку на делфи, задача при запуске делать запрос к telegram что бы программа загружала в бота фотографию и текст, и бот отправлял бы это определенным людям.
я добился следующих результатов, программа отправляет обычное сообщение и оно доходит указанному пользователю, но вот как спамить фотку, не ясно. думаю стоит пояснить суть программы, это не спам бот, а некая система защиты, то есть программа (не моя) в случае движения на камере, она делает фото и может запустить программу с параметрами, этой запускаемой программой и будет моя программа, в параметрах номер камеры и путь до фотки будут, то есть для примера ParamStr(1) = '1'; ParamStr(2) = 'C:\fotos\20171229124923';
Так вот основной вопрос, как залить фото и получить его id что бы потом отправить запрос указав этот id
для запросов использую TIDHTTP

Код:
http.MimeType := 'multipart/form-data; boundary=' + bound;
  s := GetBoundary(true) + 'Content-Disposition: form-data; name="chat_id";' + sLineBreak + sLineBreak + ListView1.Selected.Caption + sLineBreak + sLineBreak;
  http.Document.Write(PAnsiChar(s)^, Length(s));
  s := GetBoundary(true) + 'Content-Disposition: form-data; name="photo"; filename=' +
   extractfilename(od.FileName) + sLineBreak + 'Content-Type: multipart/form-data' + sLineBreak + sLineBreak;
  http.Document.Write(PAnsiChar(s)^, Length(s));
  f := TFileStream.Create(od.FileName, fmOpenRead);
  f.Position := 0;
  http.Document.CopyFrom(f, f.Size);
  f.Free;
  s := sLineBreak + GetBoundary(true);
  http.Document.Write(PAnsiChar(s)^, Length(s));
  s := 'Content-Disposition: form-data; name="caption";' + sLineBreak + slinebreak + AnsiToUtf8('Тестовая фотка') + sLineBreak + getboundary(false);
  http.Document.Write(PAnsiChar(s)^, Length(s));
  s := Format('https://api.telegram.org/bot%s/sendphoto', [bot_key]);
  if http.HTTPMethod('POST', s) then
    Memo1.Lines.LoadFromStream(http.Document);
вот что я нашел, но не могу приспособить это дело под IdHTTP((( и нет данных о некоторых переменных
PTyTb32 вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Уведомления Zabbix в Telegram Necroskull Администрирование dedicated серверов, VPS/VDS, shared хостингов, IaaS, PaaS. 1 10.06.2017 14:46
Бот в telegram Manr63 Свободное общение 1 28.02.2017 13:58
telegram bot progmen Фриланс 2 30.11.2016 14:27
Использование API Telegram Cruzel Общие вопросы C/C++ 2 08.09.2015 14:17