C# HttpClient: Передача url файла через http-запрос
Имеется программа взаимодействия с Telegram для автоматизированного постинга в канал. Запостить сообщение в канал нельзя через функцию API (как с ботом к примеру), но лишь посредством отправки http-запроса. Всё бы ничего, но итоговое сообщение в Telegram-канале должно содержать специальные символы Percent-encoding, чтобы ссылка всё ещё отсылалась на целевой файл. Текст сообщения я отправляю через http-запрос, так что процентная декодировка неизбежна. Как бы мне указать в ссылке, что данное сообщение нужно передать в исконном виде, не преобразовывая аргументы запроса.
Вот используемый код.
void TelegramBroadcast(string message)
{
try
{
const string BOT_TOKEN = "~"; //Токен беру из бота BotFather
const string CHANNEL_TAG = "~"; //Тег канала беру из Телеграм
string requestUrl = $"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage?chat_id={CHANNEL_TAG}&text={message}";
using (var httpClient = new HttpClient())
{
var res = httpClient.GetAsync(requestUrl).Result;
if (res.StatusCode != HttpStatusCode.OK)
MessageBox.Show("Could not broadcast DB-SAVE: " + res.ReasonPhrase);
}
WriteToLog("Telegram message was posted to channel on tag: " + CHANNEL_TAG + " by " + BOT_TOKEN, new StackTrace());
}
catch (Exception ex)
{
MessageBox.Show("TelegramBroadcast(): " + ex.Message);
WriteToLog("Failed to broadcast to the Telegram channel", new StackTrace(), ex);
}
}