[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
Название темы
Автор Заголовок Раздел Ответы Дата
Chekon На проверке sms.chekons.com - Сервис для получения SMS на реальные номера USA "Non-VoIP, безлим SMS, API + Бот" Ищу работу. Предлагаю свои услуги. 3
A TgCoinBot - Бот для VkMix + авторегер Telegram Софт для работы с текстом/Другой софт 1
D [AmazonDream] - Бот для автоматического прогрева ваших саморегов Amazon и других шопов. Все что не подошло по разделу 1
1 Закрыто [Бот-Автопродаж] - Автореги delivery club для скидок(30%). Автовыдача. Корзина 0
K Продам Бот телеграмм (для продаж) Сайты/Хостинг/Сервера 0
design161 Jointowritebot - Бот для продвижения каналов в телеграм Сайты/Хостинг/Сервера 1
design161 Бот для накрутки просмотров в телеграм Сайты/Хостинг/Сервера 2
J Бот для рассылки на юле - Youla Master Продажа софта 60
J Бот для рассылки на авито - Avito Monster Sender Продажа софта 113
S Бот для чека вашей базы на приват - бесплатно Бруты/Парсеры/Чекеры 2
C LikeOrgasm Bot 0.05 by FlimE <<< Бот для VK >>> Софт для работы с текстом/Другой софт 2
H [ FREE ] Бот отрисовщик в Telegram Другое 6
MrSortRow Ожидает оплаты @MrSortRow_bot — Наилучший Бот-Облако запросов | ПОИСК ЦЕЛЫХ ЛОГОВ!| Поиск куки Все что не подошло по разделу 1
AHAHAC Бот телеграмм казино скам Продажа софта 0
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
S Куплю Бот по скупу TELEGRAM | От 5-7₽ | TDATA - папка из логов Куплю/Продам 0
O Закрыто Stash-Shop Магазин аккаунтов / Бот авто-продаж в телеграм / Textnow / Telegram / Google voice / Full info / Самореги БА Корзина 3
Р Проверено Бот Автопродаж | Реферальная система | Телеграм Магазин | Telegram AutoShop [БЕСПЛАТНЫЙ] Продажа софта 2
G Закрыто Продажа качественных аккаунтов Google Voice с выбором под штат! Бот 24/7! Лучший прайс! Оплата в любой крипте! Корзина 7
F Бот по отрисовки фейк чеки популярных приложений Ищу работу. Предлагаю свои услуги. 0
Uno-uno Интересно Скрипт EASYDROP +Админка +Бот Другое 3
E Продам Бот автопродаж телеграмм Сайты/Хостинг/Сервера 4
E Интересно Бот с автооплатой на Python Другие ЯП 10
F Бот Телеграм продажа QIWI ( SCAM ) Полезные статьи 1
design161 Бот автопродаж аккаунтов Сайты/Хостинг/Сервера 1
Chekon Realsim_bot - Бот по приему SMS на реальные симки USA. Все что не подошло по разделу 7
L Бот-траф/Накрутка счетчиков Трафик, загрузки, инсталлы, iframe 0
АнАлЬнАя ЧуПаКаБрА Бот Crex24 Добываем крипту по 20$ в день! Софт для работы с текстом/Другой софт 0
Support81 VPN – ловушка для Android: как приложения превращают смартфоны в зомби Новости в сети 0
Support81 Токены Discord нарасхват: взлом Top.gg обернулся кошмаром для разработчиков Новости в сети 0
Emilio_Gaviriya Статья Платформы для проверки и улучшения навыков белого хакинга. Уязвимости и взлом 0
Emilio_Gaviriya Статья Инструмент для сбора whois-истории. Уязвимости и взлом 0
Support81 82 участника, 1,3 миллиарда и...отсрочка: что происходит с российской платформой для обмена кодом Новости в сети 0
Support81 DarkGPT: незаменимый OSINT-инструмент для специалистов в сфере кибербезопасности Новости в сети 0
Support81 StopCrypt: вымогатель для простых смертных обзавёлся мантией-невидимкой Новости в сети 0
M Работа для соискателей из РФ и РБ. Предоставляю работу. Ищу специалиста. 1
G Нужны толковые ребята для работы Ищу работу. Предлагаю свои услуги. 0
Emilio_Gaviriya Статья Инструменты для исследования вредоносного ПО. Вирусология 0
Support81 WogRAT злоупотребляет сервисом для заметок aNotepad Новости в сети 0
Emilio_Gaviriya Статья Полезные дополнения для пентеста. Уязвимости и взлом 0
Support81 Наказание для Минобороны: как Великобритания «помогла» афганским беженцам скрыться от талибов Новости в сети 0
Black_ppss ⭐ Поиск людей для работы с команде! Вещевой карж по EU! Предоставляю работу. Ищу специалиста. 1
D Подработка для всех! Предоставляю работу. Ищу специалиста. 0
Support81 Троян GoldPickaxe крадет лица владельцев iPhone для доступа к банковским счетам Новости в сети 0
Support81 92% атак по email: электронная почта остается главной лазейкой для фишеров Новости в сети 0
Support81 ЦБ объявил войну кредитным мошенникам: что изменится для банков и клиентов Новости в сети 0
Emilio_Gaviriya Статья Почему стоит избегать использования ботов для поиска персональных данных: Опасности и риски. Анонимность и приватность 0

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