Загрузка...

Асинхронный эхо бот на запросах в Telegram

Тема в разделе C# создана пользователем Sad0w 19 июн 2024. 222 просмотра

Загрузка...
  1. Sad0w
    Sad0w Автор темы 19 июн 2024 50 27 май 2023
    Всем привет. Решил я переписать своего бота с Python на .NET 8

    Зависимости:
    Для работы кода, необходимо установить пакет Newtonsoft.Json


    Исходный код с пояснениями:
    CSHARP
    using Newtonsoft.Json.Linq;

    class Program
    {
    private static HttpClient client = new();

    private static string token = ""; // здесь хранится токен бота
    private static long offset = 0; // необходима, чтобы стирать уже обработанные сообщения

    static async Task Main()
    {
    while (true)
    {
    string getUpdates = await client.GetStringAsync($"https://api.telegram.org/bot{token}/getUpdates{(offset > 0 ? $"?offset={offset}" : "")}"); // получаем все события бота
    JObject result = JObject.Parse(getUpdates); // получаем json

    if (result["result"].Count() > 0) // если событий больше нуля
    {
    offset = result["result"][0]["update_id"].Value<long>() + 1; // получаем offset, чтобы стереть это событие
    string message = result["result"][0]["message"]["text"].Value<string>(); // получаем сообщение пользователя
    long chat_id = result["result"][0]["message"]["chat"]["id"].Value<long>(); // получаем айди чата

    await client.GetAsync($"https://api.telegram.org/bot{token}/sendMessage?chat_id={chat_id}&text={message}"); // отправляем сообщение в ответ
    }

    await Task.Delay(300); // задержка в 300 милисекунд, чтобы избежать ошибку 429. При необходимости, можно уменьшить или увеличить значение
    }
    }
    }
     
  2. vtlstolyarov
    vtlstolyarov 20 июн 2024 474 8 янв 2022
    Если боту одновременно написало 2 человека, один из них получает хуй вместо эха.
     
  3. dandlmorrow
    dandlmorrow 20 июн 2024 82 11 янв 2020
    JObject питонист детектед :pepeclown:
     
    1. dandlmorrow
      dandlmorrow, понадобился год, чтобы разобраться видимо, но так и не получилось..
      [IMG]
Top