Ошибка отправки изображения в TG BOT С#
Пробую написать бота для ТГ на Шарпе, но при отправки картинку, ничего не происходит и бот просто закрывается. Направляю часть кода
using Telegram.Bot.Exceptions;
using Telegram.Bot.Polling;
using Telegram.Bot.Types.ReplyMarkups;
using Telegram.Bot;
using Telegram.Bot;
using Telegram.Bot.Exceptions;
//using Telegram.Bot.Extensions.Polling;
using Telegram.Bot.Types;
using Telegram.Bot.Types.Enums;
using Telegram.Bot.Types.ReplyMarkups;
using System.IO;
using Telegram.Bots.Requests;
using System;
using System.Drawing;
//using Telegram.Bot.Types.InputFiles;
internal class Program
{
private static async Task Main(string[] args)
{
var botClient = new TelegramBotClient("токен");
using var cts = new CancellationTokenSource();
var receiverOptions = new ReceiverOptions
{
AllowedUpdates = { }
};
botClient.StartReceiving(
HandleUpdatesAsync,
HandleErrorAsync,
receiverOptions,
cancellationToken: cts.Token);
var me = await botClient.GetMeAsync();
Console.WriteLine($"Начал работу @{me.Username}");
Console.ReadLine();
cts.Cancel();
async Task HandleUpdatesAsync(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken)
{
if (update.Type == UpdateType.Message && update?.Message?.Text != null)
{
await HandleMessage(botClient, update.Message);
return;
}
if (update.Type == UpdateType.CallbackQuery)
{
await HandleCallbackQuery(botClient, update.CallbackQuery);
return;
}
}
async Task HandleMessage(ITelegramBotClient botClient, Message message)
{
if (message.Text == "/start")
{
var fott = @"https://i.yapx.ru/Uz5RA.png";
using (Stream stream = System.IO.File.OpenWrite(fott))
{
message = await SendPhotoAsync(message.Chat,
photo: stream,
caption: "test photo caption"
);
}
...
}}}}
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Зачем вы напихали кучу методов внутрь метода Main? Я еле разобрался, что к чему. Чтобы скачать картинку с инета, потребуется HttpClient.
Как-то так получится.
internal class Program
{
private static readonly HttpClient client = new(new HttpClientHandler { AutomaticDecompression = DecompressionMethods.All })
{
DefaultRequestVersion = HttpVersion.Version20
};
private static async Task Main(string[] args)
{
var botClient = new TelegramBotClient("токен");
using var cts = new CancellationTokenSource();
var receiverOptions = new ReceiverOptions
{
AllowedUpdates = { }
};
botClient.StartReceiving(
HandleUpdatesAsync,
HandleErrorAsync,
receiverOptions,
cancellationToken: cts.Token
);
var me = await botClient.GetMeAsync();
Console.WriteLine($"Начал работу @{me.Username}");
Console.ReadKey();
cts.Cancel();
}
static async Task HandleUpdatesAsync(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken)
{
if (update.Type == UpdateType.Message && update.Message?.Text != null)
{
await HandleMessage(botClient, update.Message);
return;
}
if (update.Type == UpdateType.CallbackQuery)
{
await HandleCallbackQuery(botClient, update.CallbackQuery);
return;
}
}
static async Task HandleMessage(ITelegramBotClient botClient, Message message)
{
if (message.Text == "/start")
{
string fott = @"https://i.yapx.ru/Uz5RA.png";
using Stream stream = await client.GetStreamAsync(fott);
Message sendMessage = await SendPhotoAsync(message.Chat,
photo: stream,
caption: "test photo caption"
);
}
}
private static Task<Message> SendPhotoAsync(Chat chat, Stream photo, string caption)
{
throw new NotImplementedException();
}
private static Task HandleCallbackQuery(ITelegramBotClient botClient, CallbackQuery? callbackQuery)
{
throw new NotImplementedException();
}
private static Task HandleErrorAsync(ITelegramBotClient client, Exception exception, CancellationToken token)
{
throw new NotImplementedException();
}
}