Помогите разобраться - отправка картинки в Телеграм канал через API

  • Автор темы Автор темы backoff
  • Дата начала Дата начала

backoff

Client
Регистрация
20.04.2015
Сообщения
6 355
Реакции
6 640
Баллы
113
Ну собственно вопрос - как? :)

бот создан, ключ есть, сообщения отправлять могу.
А вот отправить картинку с компа, не прокурил пока.
Помогите плиз, объяснением
 
это понятно, конечно первым делом в документацию полез...
так как не прогер, не понял как использовать "что шлем", да и чем слать так же не до конца понял.
можно пример привести?
 
Так же не могу разобраться с данным вопросом. По идеи нужно использовать post запрос, только как грамотно составить, именно картинку вставленную ссылкой из сети могу, там гет подходит, а вот как именно свою загрузить не пойму.
 
Вот здесь есть пример кода отправки картинки в телеграмм через АПИ.
 
Вот здесь есть пример кода отправки картинки в телеграмм через АПИ.
Можно на кубике накидать для наглядности? Ну очень не легко понять чужой код.
Всего то нужно из директории фотку закидывать методом sendPhoto
 
  • Спасибо
Реакции: vitashok
Можно на кубике накидать для наглядности? Ну очень не легко понять чужой код.
Всего то нужно из директории фотку закидывать методом sendPhoto

Вот пример.
На вход требует ЧатИд, БотИд, Путь к изображению.
 

Вложения

{"ok":false,"error_code":404,"description":"Not Found"}
В момент создания шаблона я отправил скриншот в телеграмм. Вот результат:
скриншот.png
Собственно должно работать.
Картинку точно Бот должен отправлять пользователю?
Просто если пользователь-пользователю - то данный шаблон не подойдет...

На скриншоте вижу что БотИд дублируется в запросах (botbot****) - может это приводит к проблеме?
 
ошибка была в этом
string.Format("https://api.telegram.org/bot{0}/sendPhoto?chat_id={1}

вот правильный код
Код:
Развернуть Свернуть Копировать
string strToken = project.Variables["bot_id"].Value;
string strChatId = project.Variables["chat_id"].Value;
string parse_mode = "html";
string img = project.Variables["img"].Value;
string url_bot = string.Format("https://api.telegram.org/{0}/sendPhoto?chat_id={1}", strToken, strChatId);
string temp = CommonCode.SendPhoto(img, url_bot);


спасибо за помощь!
 
ошибка была в этом
string.Format("https://api.telegram.org/bot{0}/sendPhoto?chat_id={1}

вот правильный код
Код:
Развернуть Свернуть Копировать
string strToken = project.Variables["bot_id"].Value;
string strChatId = project.Variables["chat_id"].Value;
string parse_mode = "html";
string img = project.Variables["img"].Value;
string url_bot = string.Format("https://api.telegram.org/{0}/sendPhoto?chat_id={1}", strToken, strChatId);
string temp = CommonCode.SendPhoto(img, url_bot);


спасибо за помощь!
Я номер бота указывал без слова БОТ во входящих настройках.
Собственно и разобрались почему выдавало ошибку - это хорошо.

Кстати, сразу новый вопрос, а как гифку отправить ? :-)
Такое не отправлял :(
 
Ребят, этот код работает. Спасибо.
Но вот если мы возвращаем результат работы сниппета в переменную, то получается просто "Ок".
Как сделать, чтобы он возвращал json с сервера с информацией о созданном посте?
 
А все. Это делается так. Добавляем в конце кода:
Код:
Развернуть Свернуть Копировать
return temp;
 
Если кому надо, добавил использование прокси. Актуально для заблокированного Телеграм.
Прокси в стандартном для Zennoposter формате login:pass@ip:port

Общий код.
Код:
Развернуть Свернуть Копировать
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
using System.Text.RegularExpressions;
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ProjectModel.Collections;
using ZennoLab.InterfacesLibrary.ProjectModel.Enums;
using ZennoLab.Macros;
using Global.ZennoExtensions;
using ZennoLab.Emulation;
using System.Net.Http;

namespace ZennoLab.OwnCode
{
    /// <summary>
    /// A simple class of the common code
    /// </summary>
    public class CommonCode
    {
        /// <summary>
        /// Lock this object to mark part of code for single thread execution
        /// </summary>
        public static object SyncObject = new object();

        // Insert your code here
        public static string SendPhoto (string photo, string url_telegram, string proxy)
        {
          var sBoundary = DateTime.Now.Ticks.ToString("x");
          var contentType = "multipart/form-data";
          string sPostMultiString = "";
          // функция сбора данных
          Func<string, string, string, string> multiFormDataText = delegate(string key, string value, string boundary)
            {
               var output = string.Format("--{0}\r\n", boundary);
               output += string.Format("Content-Disposition: form-data; name=\"{0}\"\r\n\r\n", key);
               output += value + "\r\n";
               return output;
            };
          // функция сбора данных
          Func<string, string, string, string, string, string> multiFormDataFile = delegate(string key, string value, string fileName, string fileType, string boundary)
            {
               var output = string.Format("--{0}\r\n", boundary);
               output += string.Format("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n", key, fileName);
               output += string.Format("Content-Type: {0}\r\n\r\n", fileType);
               output += string.Format("{0}\r\n", value);
               return output;
            };
          // другие поля
          sPostMultiString += multiFormDataText("action", "upload", sBoundary);
          // файл
          string pro = proxy;
          var fileInfo = new System.IO.FileInfo(photo);
          sPostMultiString += multiFormDataText("width", fileInfo.Name, sBoundary);
          sPostMultiString += multiFormDataFile("photo", fileInfo.FullName, fileInfo.Name, "image/png", sBoundary);
          var str = ZennoPoster.HttpPost(url_telegram, sPostMultiString, contentType, pro, Cookies: "", AdditionalHeaders: new string[]{""});
          return str;
        }
    }
  
}


Код экшена

Код:
Развернуть Свернуть Копировать
string strToken = project.Variables["bot_id"].Value;
string strChatId = project.Variables["chat_id"].Value;
string parse_mode = "html";
string proxy = project.Variables["proxy"].Value;
string img = project.Variables["img"].Value;
string url_bot = string.Format("https://api.telegram.org/{0}/sendPhoto?chat_id={1}", strToken, strChatId);
string temp = CommonCode.SendPhoto(img, url_bot, proxy);
return temp;
 
  • Спасибо
Реакции: Sanekk и doc
К сожалению код перестал работать. Может дело в библиотеке или еще в чем либо. Случилось это после обновления зенки до последней версии
Когда пытаюсь отправить картинку, пишет: {"ok":false,"error_code":404,"description":"Not Found: method not found"}
 
Такие дела)
 
а есть без подключения библиотеки ? простым пост запросом ?
 
Вот пример.
На вход требует ЧатИд, БотИд, Путь к изображению.

отправка документ в Телеграм канал через API

string strToken = project.Variables["bot_id"].Value;
string strChatId = project.Variables["chat_id"].Value;
string parse_mode = "html";
string img = project.Variables["txt"].Value;
string url_bot = string.Format("https://api.telegram.org/bot{0}/sendDocument?chat_id={1}", strToken, strChatId);
string temp = CommonCode.SendDocument(txt, url_bot);

может быть, кто знает, почему он не работает с * .txt файлами?
 
Код:
Развернуть Свернуть Копировать
string strToken = project.Variables["bot_id"].Value;
string strChatId = project.Variables["chat_id"].Value;
string parse_mode = "html";
string img = project.Variables["img"].Value;
string url_bot = string.Format("https://api.telegram.org/{0}/sendPhoto?chat_id={1}", strToken, strChatId);
string temp = CommonCode.SendPhoto(img, url_bot);

как в такой код добавить caption?
 
  • Спасибо
Реакции: socsecret.ru
Это я так понимаю метод поста картинок в чат а как прикрутить картинку к посту, оформить его картинкой? Картинка расположена на внешнем URL, мне надо ее добавить в пост как оформление. Как?
 
Сделал кто, чтобы в телеграмм отправлять документ?
 
А можно ли все тоже самое сделать просто POST запросом без C#?
 
ошибка была в этом
string.Format("https://api.telegram.org/bot{0}/sendPhoto?chat_id={1}

вот правильный код
Код:
Развернуть Свернуть Копировать
string strToken = project.Variables["bot_id"].Value;
string strChatId = project.Variables["chat_id"].Value;
string parse_mode = "html";
string img = project.Variables["img"].Value;
string url_bot = string.Format("https://api.telegram.org/{0}/sendPhoto?chat_id={1}", strToken, strChatId);
string temp = CommonCode.SendPhoto(img, url_bot);


спасибо за помощь!
помогите разобраться как отправить картинку в телеграм, у меня не работает. через post get запрос не отправляет, делаю кубик С#, начинает ругаться на команду sendPhoto
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)