public void ListenChat() { api.Authorize(new ApiAuthParams() { AccessToken = vkToken }); while (true) { var longPollServer = api.Groups.GetLongPollServer(groupID); var longPollHistory = api.Groups.GetBotsLongPollHistory( new BotsLongPollHistoryParams() { Server = longPollServer.Server, Key = longPollServer.Key, Ts = longPollServer.Ts, Wait = 25 }); if (longPollHistory.Updates.Count() == 0) { continue; } foreach (var update in longPollHistory.Updates) { if (update.Type == GroupUpdateType.MessageNew) { var userID = update.Message.FromId; var from = api.Users.Get(new long[] { (long)userID }).FirstOrDefault().FirstName; var text = update.Message.Text; SendMessages(vkUserInteraction.PrepareAnswer(userID, from, text)); } } } }
public void ListenChat() { JSONFormatter formatter = new JSONFormatter(); //получение сдвига int offset = GetOffset(); string offsetString = "?offset=" + GetOffset().ToString(); string methodUrl = baseUrl + telegramToken + "/getUpdates"; //частота запросов int requestFrequency = 1000; Stopwatch sw = new Stopwatch(); sw.Start(); string responseString; while (true) { if (sw.ElapsedMilliseconds % requestFrequency != 0) { continue; } HttpWebRequest request = (HttpWebRequest)WebRequest.Create(methodUrl + offsetString); request.Method = "GET"; //получение списка непрочитанных сообщений try { HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream stream = response.GetResponseStream(); StreamReader reader = new StreamReader(stream); responseString = reader.ReadToEnd(); } catch (Exception e) { Console.WriteLine("Невозможно получить ответ от Телеграма"); Console.WriteLine(e.Message); break; } int updateId = offset; //список всех непрочитанных сообщений в джейсоне List <TelegramMessage> currentMessages = formatter.ParseLastMessages(responseString); if (currentMessages == null) { continue; } foreach (TelegramMessage message in currentMessages) { updateId = message.UpdateId; SendMessages(telegramUserInteraction.PrepareAnswer(message.Chat, message.SenderName, message.Text)); } //обновление и сохранение оffсета offset = updateId + 1; SetOffset(offset); offsetString = "?offset=" + GetOffset().ToString(); } }