[C#] Бот для Телеграмма

F

Flwk

Original poster
Начал изучать C# и решил попробовать написать простенького бота для Телеги. Решил поделиться, вдруг кому то пригодится, для тех, кто начинает
P.S Как только разберусь с InLine Кнопками, могу добавить, если кому то интересно будет

Что нам необходимо : Библиотека Newtonsoft.Json (Проект - Управление пакетами Nuget -- там в поиск вбиваете )

Объявляем переменные:

Код:
int update_id = 0; // Для сообщений
int count = 0; // Уровень тупости ( писал для друзей, это не обязательно)
string messageFromId = ""; // ID отправителя
string messageText = ""; // Текст сообщения для бота
string token = ""; // Токен Вашего бота

Так как РКН блокирует все сервисы Телеграмма, а нам необходимо будет отправлять запросы и скачивать строку, то необходимы прокси. Тут все просто

Код:
WebClient webClient = new WebClient(); // Собсна сам клиент, который все и будет делать
webClient.Proxy = new WebProxy("Любой айпишник валидного прокси. Я юзал https");

Далее еще одна переменная, в которой по сути указан просто адрес нашего бота :

Код:
string startUrl = $"https://api.telegram.org/bot{token}";

Затем бесконечный цикл (while (true)), в котором пишем следующее :

Код:
Thread.Sleep(100); // Что б не было спама
string url = $"{startUrl}/getUpdates?offset={update_id + 1}";  // прибавляем к id сообщения +1, чтоб считалось прочитанным
string response = webClient.DownloadString(url); // Скачиваем строку с ответом, которую мы получили при запросе на url
var arr = JObject.Parse(response)["result"].ToArray(); // json массив (если можно так назвать?), в котором хранятся сообщения

После этого, создаем еще один цикл перебора по нашему массиву с ответами


Код:
 foreach (var message in arr) // logic

                {
                    string s1 = Convert.ToString(message["update_id"]);
                    update_id = Convert.ToInt32(s1);

Затем идет конструкция try ... catch в которую мы пишем следующее :


Код:
 try

                    {
                    
                        messageFromId = message["message"]["from"]["id"].ToString();
                        Console.WriteLine($"{update_id} {messageFromId} {messageText}");
                        string userMessage = message["message"]["text"].ToString();
                    
                        if (userMessage == "Тут Ваша команда")
                        {
                            // Ответ для пользователя
                            var whoispidorname = message["message"]["from"]["first_name"].ToString(); // Тут мы получаем Имя пользователя
                            var whoispidorlastname = message["message"]["from"]["last_name"].ToString(); //  Фамилию
                            messageText += whoispidorname + whoispidorlastname; // Сам текст сообщения, который отправит бот
                            url = $"{startUrl}/sendMessage?chat_id={messageFromId}&text={messageText}"; // Запрос
                            webClient.DownloadString(url); // Загрузка запроса
                            messageText = ""; // Делаем переменную пустую
                        
                        }
Другой пример
Код:
else if (userMessage == "")

                        {
                            messageText += ""; // Ваше сообщения для юзера
                            url = $"{startUrl}/sendMessage?chat_id={messageFromId}&text={messageText}";
                            webClient.DownloadString(url);
                            messageText = "";
                        }
Так как наш бот умеет принимать только текст, а остальное нам надо как то просто обработать и не крашануться, то тут используем catch :

Код:
catch (System.NullReferenceException)

                    {
                    
                            messageText += "Something"; // Текст сообщения
                            url = $"{startUrl}/sendMessage?chat_id={messageFromId}&text={messageText}";
                            webClient.DownloadString(url);
                            messageText = "";

Вот и все. Повторюсь, только начинаю, если кто - чего подскажет, буду благодарен.
Полный код

Код:
 static void Main(string[] args)

        {
        
            int update_id = 0; // for message
            int count = 0; // this count of the level of stupidity
            string messageFromId = ""; // id user from got message
            string messageText = ""; // text messag
            string token = ""; // token your bot
        

            WebClient webClient = new WebClient();
            webClient.Proxy = new WebProxy("199.195.251.143:03128");
            string startUrl = $"https://api.telegram.org/bot{token}"; // start
            while (true)
            {
            
                Thread.Sleep(100); // for antispam
                string url = $"{startUrl}/getUpdates?offset={update_id + 1}";  // i am do +1 for the message has been read
                string response = webClient.DownloadString(url); // download string

                var arr = JObject.Parse(response)["result"].ToArray(); // this array of all message

                foreach (var message in arr) // logic
                {
                    string s1 = Convert.ToString(message["update_id"]); // id message
                    update_id = Convert.ToInt32(s1); // convert
                    try
                    {
                    
                        messageFromId = message["message"]["from"]["id"].ToString();
                        Console.WriteLine($"{update_id} {messageFromId} {messageText}");
                        string userMessage = message["message"]["text"].ToString();
                    
                        if (userMessage == "?") // any command
                        {
                            //its response for users command
                            var whoispidorname = message["message"]["from"]["first_name"].ToString();
                            var whoispidorlastname = message["message"]["from"]["last_name"].ToString();
                            messageText += whoispidorname + whoispidorlastname;
                            url = $"{startUrl}/sendMessage?chat_id={messageFromId}&text={messageText}";
                            webClient.DownloadString(url);
                            messageText = "";
                        
                        }
                        // the same
                        else if (userMessage == "")
                        {
                            messageText += ""; // text message for users
                            url = $"{startUrl}/sendMessage?chat_id={messageFromId}&text={messageText}";
                            webClient.DownloadString(url);
                            messageText = "";
                        }
                        //something
                        else if (userMessage == "")
                        {
                            messageText += "somethingTextForUsers";
                            url = $"{startUrl}/sendMessage?chat_id={messageFromId}&text={messageText}";
                            webClient.DownloadString(url);
                            messageText = "";
                        }
                    
                        else
                        {
                            messageText += "Введите команду\nВведите слово Команды, если не знакомы со списком команд";
                            url = $"{startUrl}/sendMessage?chat_id={messageFromId}&text={messageText}";
                            webClient.DownloadString(url);
                            messageText = "";
                        
                        }
                    }
                    catch (System.NullReferenceException) // The bot is broken when you receive something, in addition to the text
                    {
                        if (count < 3)
                        {
                            messageText += "Something";
                            url = $"{startUrl}/sendMessage?chat_id={messageFromId}&text={messageText}";
                            webClient.DownloadString(url);
                            messageText = "";
                            count++;
                        }
                        else if (count == 3)
                        {
                            messageText += "Something";
                            url = $"{startUrl}/sendMessage?chat_id={messageFromId}&text={messageText}";
                            webClient.DownloadString(url);
                            messageText = "";
                            count++;
                        }
                        else if(count > 3)
                        {
                            messageText += "Something";
                            url = $"{startUrl}/sendMessage?chat_id={messageFromId}&text={messageText}";
                            webClient.DownloadString(url);
                            messageText = "";
                        }
                    }
                }
            }
        }
 
  • Like
Реакции: SkyLoKi и shellest
Название темы
Автор Заголовок Раздел Ответы Дата
Support81 Исследователи взломали чат-бот для найма сотрудников и раскрыли секреты KFC и Subway Новости в сети 0
S Автоматический бот для поиска ваших запросов с логов [url:login:password] Все что не подошло по разделу 0
Chekon На проверке sms.chekons.com - Сервис для получения SMS на реальные номера USA "Non-VoIP, безлим SMS, API + Бот" Ищу работу. Предлагаю свои услуги. 3
E Интересно Мощный телеграм бот для накрутки в соц. сетях (самые низкие цены на рынке) Спам, рассылки, трафик, SEO 1
U Автоматизированный бот Telegram для продажи виртуальных товаров. Другое 1
D Халявный бот для пробива по номеру телефона Другое 1
1 Закрыто [Бот-Автопродаж] - Автореги delivery club для скидок(30%). Автовыдача. Корзина 0
A TgCoinBot - Бот для VkMix + авторегер Telegram Софт для работы с текстом/Другой софт 1
A Программа, бот для склика Google Ads (проверенная версия списания средств) Продажа софта 0
A Программа, бот для склика Google Ads (проверенная версия списания средств) Продажа софта 1
D [AmazonDream] - Бот для автоматического прогрева ваших саморегов Amazon и других шопов. Все что не подошло по разделу 1
O @code_sms_bot - бот для приёма смс Ищу работу. Предлагаю свои услуги. 3
A anyshop.su - телеграм бот и сайт для авто продажи товаров Сайты/Хостинг/Сервера 0
K Продам фейковый наркошоп бот tg для заработка Продажа софта 1
S Закрыто Продам фейковый наркошоп бот tg для заработка Корзина 0
A Программа, бот для склика Google Ads (проверенная версия списания средств) Продажа софта 9
K Продам Бот телеграмм (для продаж) Сайты/Хостинг/Сервера 0
Uno-uno БОТ ДЛЯ ПАССИВА $ Продажа софта 2
A Закрыто Телеграм бот для поиска имени по номеру или номера по ФИО Украина Корзина 2
design161 Jointowritebot - Бот для продвижения каналов в телеграм Сайты/Хостинг/Сервера 1
design161 Бот для накрутки просмотров в телеграм Сайты/Хостинг/Сервера 2
B Чат-бот с искусственным интеллектом для WhatsApp Раздача email 2
H Telegram бот для накрутки друзей VK Ищу работу. Предлагаю свои услуги. 1
J Бот для рассылки на юле - Youla Master Продажа софта 60
J Бот для рассылки на авито - Avito Monster Sender Продажа софта 113
I [100$] Telegram-бот для покупки живых инсталлов Трафик, загрузки, инсталлы, iframe 0
S Бот для чека вашей базы на приват - бесплатно Бруты/Парсеры/Чекеры 2
1 vkAaAndFl - бот для флуда с интересными функциями ВКонтакте СИ/Фишинг/Мошенничество 0
N FASTFreeLikes by Ask1998 – отличный бот для Fastfreelikes Софт для работы с текстом/Другой софт 6
C LikeOrgasm Bot 0.05 by FlimE <<< Бот для VK >>> Софт для работы с текстом/Другой софт 2
C VKStorm Bot – бот для VKstorm.ru Софт для работы с текстом/Другой софт 2
Support81 GhostGPT: как Telegram-бот из новичков делает профи криминального ИИ Новости в сети 1
whiteside Интересно БОТ С ХАЛЯВНОЙ НЕДЕЛЕЙ ПРОБИВА Пробив информации/Прозвоны 0
H [ FREE ] Бот отрисовщик в Telegram Другое 6
Support81 Gemini: революция ИИ от Google AI - чат-бот, превзошедший человека Новости в сети 0
lonesttar Ожидает оплаты Скрипт бота по аренде виртуальных номеров + бот техподдержка! Продажа софта 0
lonesttar Ожидает оплаты Скрипт бота по аренде прокси + бот техподдержка! Продажа софта 0
SMSvTelegram Телеграм бот продажи сканов документов разных стран Ищу работу. Предлагаю свои услуги. 1
U Usersbox — OSINT бот по пробиву людей и поиску информации Корзина 0
AHAHAC Бот телеграмм казино скам Продажа софта 0
SMSvTelegram На проверке Долгосрочная аренда номеров под sms через телеграм бот Ищу работу. Предлагаю свои услуги. 1
E На проверке Сервис №1 по продаже ГОСУСЛУГ и документов под МФО, БК, КИВИ и пр. / бот автопродаж / Все что не подошло по разделу 1
Parser_Pro Бесплатный парсер бот в Телеграм [ Parser Pro ] Бруты/Парсеры/Чекеры 7
G Продам Платежные системы, Карты, IBAN, Биржи, Крипта, Кошельки, Телефония, Симки, Прокси, Дропы, Сканы - Telegram бот Финансы - биллинги, банки, кошельки, логи 0
SMSvTelegram Зарабатывать на привлечении клиентов в телеграм бот. Получайте % от продажи товаров! Ищу работу. Предлагаю свои услуги. 3
A Alice in The Land of Malware | ALICESHOPBOT (Сайт/Бот авто-продаж Telegram) Корзина 0
A Alice in The Land of Malware | SHOP SCAM (Сайт/Бот авто-продаж Telegram) Корзина 0
O Бот телеграм - онлайн калькулятор криптовалют SHKEPEERBOT Другое 0
T Закрыто Авто Бот по продаже Facebook и Gpay. Корзина 0
N Интересно Готовый бот Инвест пирамида Другие ЯП 0

Название темы