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

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;
}
 

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18

backoff

Client
Регистрация
20.04.2015
Сообщения
6 189
Благодарностей
6 537
Баллы
113
все работает. надо просто внимательнее быть, и читать ветку
 

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18
Разобрался, вроде заработало.
 

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18
Может знает кто, как вот такое отправить

70803
 

one

Client
Регистрация
22.09.2015
Сообщения
6 849
Благодарностей
1 276
Баллы
113

one

Client
Регистрация
22.09.2015
Сообщения
6 849
Благодарностей
1 276
Баллы
113

sazonik

Client
Регистрация
19.02.2017
Сообщения
75
Благодарностей
9
Баллы
8

DrunkDeath

Client
Регистрация
24.12.2014
Сообщения
592
Благодарностей
403
Баллы
63

sazonik

Client
Регистрация
19.02.2017
Сообщения
75
Благодарностей
9
Баллы
8

krepskiy

Client
Регистрация
18.02.2016
Сообщения
291
Благодарностей
220
Баллы
43
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

artemweep

Новичок
Регистрация
17.03.2025
Сообщения
3
Благодарностей
0
Баллы
1
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

Client
Регистрация
19.02.2017
Сообщения
75
Благодарностей
9
Баллы
8

krepskiy

Client
Регистрация
18.02.2016
Сообщения
291
Благодарностей
220
Баллы
43

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