- Регистрация
- 10.10.2016
- Сообщения
- 172
- Благодарностей
- 14
- Баллы
- 18
Привет, столкнулся с такой проблемой.
Мне нужно отправить изображение с описанием в Телеграм. Читал документацию ну так толком и не понял как это сделать. Нашел в интернете несколько примеров отправки, но не один способ не работает.
Способы которые я побывал:
1. Способ
2. Способ
3. Способ
к этому способу потребовалось в общий код прописать:
Мне нужно отправить изображение с описанием в Телеграм. Читал документацию ну так толком и не понял как это сделать. Нашел в интернете несколько примеров отправки, но не один способ не работает.
Способы которые я побывал:
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;
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;
}