Отправка Фото с описанием в Телеграм

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

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Реакции
14
Баллы
18
Привет, столкнулся с такой проблемой.
Мне нужно отправить изображение с описанием в Телеграм. Читал документацию ну так толком и не понял как это сделать. Нашел в интернете несколько примеров отправки, но не один способ не работает.
Способы которые я побывал:

1. Способ
C#:
Развернуть Свернуть Копировать
ar bot_id = project.Variables["token_bot"].Value;// токен бота
var chat_id = project.Variables["chat_id"].Value; // ID канала
var str_post = project.Variables["title_tg"].Value + "\r\n" + "\r\n" + project.Variables["text_header"].Value + "\r\n" + "\r\n" + project.Variables["text_tg"].Value; // формируем текст для поста

string File = project.Variables["File_img"].Value;
project.SendInfoToLog(File);


string data = string.Empty;
data += "--8d769bc76365cd4\n";
data += string.Format("Content-Disposition: form-data; name=\"photo\"; filename=\"{0}\"\n", File);
data += "Content-Type: application/octet-stream\n";
data += File;
string resRequest = ZennoPoster.HttpPost(
   "https://api.telegram.org/bot" + bot_id + "/sendPhoto?chat_id=" + chat_id + "&parse_mode=HTML" +"&caption=" + str_post,  //с описанием
     data,
    "multipart/form-data",
    "",
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    "",
    "Mozilla/5.0 (Windows NT 5.1; rv:52.0) Gecko/20100101 Firefox/52.0",
    true,
    5,
    new[] {"Host: api.telegram.org"}
    );
    project.Variables["TgGetResult"].Value = resRequest;


2. Способ
C#:
Развернуть Свернуть Копировать
//картинка c описанием
string img = project.Variables["File_img"].Value;
string strToken = project.Variables["token_bot"].Value;// токен бота
string strChatId = project.Variables["chat_id"].Value; // ID канала
string proxy = "";
string message = project.Variables["text_tg"].Value;
string mode = "&parse_mode=html";

string data = "--8d769bc78125cd4\n";
data += string.Format("Content-Disposition: form-data; name=\"photo\"; filename=\"{0}\"\n", img);
data += "Content-Type: application/octet-stream\n";
data += img;

string resRequest = ZennoPoster.HttpPost(
"https://api.telegram.org/bot" + strToken + "/sendPhoto?chat_id=" + strChatId +"&caption="+ mode + message,
data,"multipart/form-data",proxy,"UTF-8",ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
30000,"","Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0",true,5,
new[] {"Host: api.telegram.org"});
project.Variables["TgGetResult"].Value = resRequest;

3. Способ
C#:
Развернуть Свернуть Копировать
string strToken = project.Variables["token_bot"].Value;
string strChatId = project.Variables["chat_id"].Value;
string parse_mode = "html";
string img = project.Variables["File_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);
return temp;

к этому способу потребовалось в общий код прописать:

C#:
Развернуть Свернуть Копировать
// Insert your code here
        public static string SendPhoto (string photo, string url_telegram){
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);
// файл
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, Cookies: "", AdditionalHeaders: new string[]{""});
return str;
}
 
Разобрался, вроде заработало.
 
Может знает кто, как вот такое отправить

70803
 
Drunk можешь подсказать как отправить картинку в телегу, выдает огибку через C# cs0103, или акак правыильно пост запросом отправить
string strToken = project.Variables["bot_id"].Value;
string strChatId = project.Variables["chat_id"].Value;
string parse_mode = "html";
string photo = project.Variables["img"].Value;
string url_telegram = string.Format("https://api.telegram.org/bot{0}/sendPhoto?chat_id={1}", strToken, strChatId);

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);
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, Cookies: "", AdditionalHeaders: new string[]{""});
 
  • Спасибо
Реакции: sazonik
string strToken = project.Variables["bot_id"].Value;
string strChatId = project.Variables["chat_id"].Value;
string parse_mode = "html";
string photo = project.Variables["img"].Value;
string url_telegram = string.Format("https://api.telegram.org/bot{0}/sendPhoto?chat_id={1}", strToken, strChatId);

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);
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, Cookies: "", AdditionalHeaders: new string[]{""});
Как с вами связаться? Нужна ваша помощь очень..
 

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