C# + Telegram bot?

Пишу бота на C#, но не могу понять как можно обрабатывать входящие сообщения. В апи есть метод getUpdates который возвращает json ответ.
Покажите пожалуйста на простом примере как я могу обработать входящее сообщение так, чтобы я смог отослать ответ.
Допустим: я посылаю боту комманду /hello, в приложении я обрабатываю команду и отсылаю ответ "привет"

Вот так получаю сообщение (но там опять же без проверки на offset

private void Form1_Load(object sender, EventArgs e)
        {
            List<result> gg = GetUpdates();
            foreach (result rs in gg)
                listBox1.Items.Add(rs.message.chat.id+": "+ rs.message.chat.first_name+": "+rs.message.text);
        }
        public static List<result> GetUpdates()
        {
            WebRequest req = WebRequest.Create("https://api.telegram.org/bot"+token+"/getUpdates");
            WebResponse resp = req.GetResponse();
            Stream stream = resp.GetResponseStream();
            StreamReader sr = new StreamReader(stream);
            string s = sr.ReadToEnd();
            sr.Close();
            var jobject = Newtonsoft.Json.Linq.JObject.Parse(s);
           mydata gg= JsonConvert.DeserializeObject<mydata>(jobject.ToString());
           List<result> results = new List<result>();
           foreach (result rs in gg.result)
           {
               results.Add(rs);
           }
           return results;
          
        }
        public static void SendMessage(string chat_id, string message)
        {
            WebRequest req = WebRequest.Create("https://api.telegram.org/bot"+token+"/sendMessage?chat_id=" + chat_id + "&text=" + message);
            req.GetResponse();
            req.Abort();
        }

    }
    public class mydata
    {
        public result[] result;
    }
    public class result
    {
        public int update_id { get; set; }
        public message message { get; set; }
    }
    public class message
    {
        public int message_id { get; set; }
        public message_from from { get; set; }
        public message_chat chat { get; set; }
        public int date { get; set; }
        public string text { get; set; }
    }
    public class message_from
    {
        public int ind { get; set; }
        public string first_name { get; set; }
        public string username { get; set; }
    }
    public class message_chat
    {
        public int id { get; set; }
        public string first_name { get; set; }
        public string username { get; set; }
    }
  • Вопрос задан
  • 12008 просмотров
Пригласить эксперта
Ответы на вопрос 1
@zverbeta
setWebhook

Use this method to specify a url and receive incoming updates via an outgoing webhook. Whenever there is an update for the bot, we will send an HTTPS POST request to the specified url, containing a JSON-serialized Update. In case of an unsuccessful request, we will give up after a reasonable amount of attempts.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы