[Source] C# Telegram Bot ответ на простые команды

Тема в разделе "C#", создана пользователем Forgeq, 29.07.18.Просмотров: 358

  1. Forgeq Гость

    Forgeq

    розыгрышей
    Всем привет, сегодня покажу как написать обычного Telegram бота который будет выполнять какие либо функции.


    Начнем:


    Для начала нам понадобится написать основу для этого бота
    Код:
    [b]using System.Collections.Specialized;
    [b]using System.Threading;
    [b]using System.Net;
    [b]using SimpleJSON;
    [b]namespace ConsoleApp3
    [b]{
        [b]class Program
        [b]{
            [b]public static string Token = @""; // токен от нашего бота
            [b]public static int LastUpdateID = 0; // последний ID полученный от бота
            [b]static void Main(string[] args)
            [b]{
            [b]// Дальше нам понадобится класс SimpleJson его вы создадите самостоятельно
         [b]//   https://github.com/Bunny83/SimpleJSON/blob/master/SimpleJSON.cs
    
    [b][b]// Далее создаем функцию проверки полученных сообщений боту
    
            [b][b]void GetUpdates()
            [b]{
                [b]using (var webClient = new WebClient())
                [b]{
    
                    [b][b]string response = webClient.DownloadString("https://api.telegram.org/bot" + Token + "/getUpdates" + "?offset=" + (LastUpdateID + 1));
    
                    [b][b]var N = JSON.Parse(response);
                    [b]foreach (JSONNode r in N["result"].AsArray)
                    [b]{
                        [b]string comm = r["message"]["text"]; // Команда для бота
                        [b]string chat = r["message"]["chat"]["id"]; // Чат ID с кем ведется переписка
                        [b]LastUpdateID = r["update_id"].AsInt; // последний id полученного диалога
                        [b]// Дальше делаем проверку первой полученной команды
                        [b]if (r["message"]["text"] == "/start")
                        [b]{
                            [b]SendMessage("Привет, я бот которого пишут по примеру темы на ********.NET", r["message"]["chat"]["id"].AsInt);
                        [b]}
                    [b]}
                [b]}
            [b]}
            [b]// Далее готовим функцию для ответа на команды
    
            [b][b]void SendMessage(string message, int chatid)
            [b]{
                [b]using (var webClient = new WebClient())
                [b]{
                    [b]var pars = new NameValueCollection();
    
                    [b][b]pars.Add("text", message); // текст который отправляем
                    [b]pars.Add("chat_id", chatid.ToString()); // чат id на который идет ответ можете задать свой, либо работать по тем от которых идут сообщения
    
                    [b][b][b]webClient.UploadValues("https://api.telegram.org/bot" + Token + "/sendMessage", pars);
    
                [b][b]}
            [b]}
    
           [b][b]// Далее делаем бесконечный цикл использования проверки сообщений для бота, я делаю на примере ConsoleApp так что мне достаточно писать это в main классе, если используете форму можете прописать в Form_Load
    
    [b][b]while (true)
                [b]{
                    [b]GetUpdates();
            [b]Thread.Sleep(500);
        [b]}
    
            [b][b]}
        [b]}
    [b]}
    [B]
    Вот и все, в конце всего что мы сделали у нас получится телеграм бот который имеет пока только 1 команду

    [​IMG]


     
  2. Allkatraz Прохожий

    Allkatraz

    37 сообщения
    25 симпатий
    0
    розыгрышей
    5 лет с нами
    10 месяцев с нами
    11 дней с нами
    РКН телегу блочит, поэтому без прокси это работать не будет