Загрузка...

Asynchronous echo bot for requests in Telegram

Thread in C# created by Sad0w Jun 19, 2024. 266 views

  1. Sad0w
    Sad0w Topic starter Jun 19, 2024 50 May 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
    Если боту одновременно написало 2 человека, один из них получает хуй вместо эха.
     
  3. dandlmorrow
    dandlmorrow Jun 20, 2024 90 Jan 11, 2020
    JObject питонист детектед :pepeclown:
     
    1. dandlmorrow
      dandlmorrow, понадобился год, чтобы разобраться видимо, но так и не получилось..
      [IMG]
Loading...
Top