Ejemplo n.º 1
0
        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));
                    }
                }
            }
        }
Ejemplo n.º 2
0
        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();
            }
        }