using System;
using System.Text.Json;
using static System.Net.Mime.MediaTypeNames;
internal class Program
{
    public static string token { get; set; } = "token";
    public static string idUser = "idUser";
    public static string text = "Bro The Best";
    public static int id_message = 0;
    private static async Task Main(string[] args)
    {       
        Rootobject rootobject = new Rootobject();
        rootobject.keyboard = new string[2][];
        rootobject.keyboard[0] = new string[1];
        rootobject.keyboard[1] = new string[2];
        rootobject.keyboard[0][0] = "Сохранить";
        rootobject.keyboard[1][0] = "Редактировать";
        rootobject.keyboard[1][1] = "Отмена";
        var jsonSt = JsonSerializer.Serialize(rootobject);
        HttpClient httpClient = new HttpClient();
        var url = $"https://api.telegram.org/bot{token}/sendMessage?chat_id={idUser}" +
            $"&text={text}&reply_markup={jsonSt}";
        using (HttpResponseMessage httpResponseMessage = await httpClient.GetAsync($"{url}"))
        {
            var jsonString = await httpResponseMessage.Content.ReadAsStringAsync();
        }
        while (true)
        {          
            
            await Task.Delay(500);
            string? jsonString;
            url = $"https://api.telegram.org/bot{token}/getUpdates?offset=-1&timeout=10";
            using (HttpResponseMessage httpResponseMessage = await httpClient.GetAsync($"{url}"))
            { jsonString = await httpResponseMessage.Content.ReadAsStringAsync(); }
            Response? deserialized = JsonSerializer.Deserialize<Response?>(jsonString);
            if (deserialized != null)
            {
                if (deserialized.result[0].message.message_id > id_message)
                {
                    id_message = deserialized.result[0].message.message_id;
                    
                    await Console.Out.WriteLineAsync(deserialized.result[0].message.text);
                }
            }
   
        }
    }
}
public class Rootobject
{
    public string?[][] keyboard { get; set; }
}
public class Response
{
    public bool ok { get; set; }
    public Result[] result { get; set; }
}
public class Result
{
    public Message message { get; set; }
    public int update_id { get; set; }
}
public class Message
{
    public Chat chat { get; set; }
    public int date { get; set; }
    public From from { get; set; }
    public int message_id { get; set; }
    public string text { get; set; }
}
public class Chat
{
    public string first_name { get; set; }
    public int id { get; set; }
    public string type { get; set; }
    public string username { get; set; }
}
public class From
{
    public string first_name { get; set; }
    public int id { get; set; }
    public bool is_bot { get; set; }
    public string language_code { get; set; }
    public string username { get; set; }
}Для чего нужен "timeout" в строке запроса?