Beispiel #1
0
        private static void newEvents(IMessageLongPollWatcher watcher, LongPollHistoryResponse history)
        {
            List <long>    ignoreList = new List <long>();
            List <Message> messages   = new List <Message>();

            if (history.History.Count > 0)
            {
                foreach (var item in history.History)
                {
                    if (item[0] == 2 || item[0] == 5)
                    {
                        if (item[2] == 131200 || item[2] == 128 ||
                            item[0] == 5)
                        {
                            ignoreList.Add(item[1]);
                        }
                    }
                }
                foreach (var message in history.Messages)
                {
                    if (ignoreList.Contains(Convert.ToInt64(message.Id)))
                    {
                        continue;
                    }
                    messages.Add(message);
                }
                newMessages(messages);
            }
        }
        static void newMessage(IMessageLongPollWatcher watcher, IEnumerable <VkNet.Model.Message> messages)
        {
            foreach (VkNet.Model.Message message in messages)
            {
                if (message.Text == config.Command)
                {
                    if (message.Attachments.Count > 0)
                    {
                        //string finalUrl = "";
                        List <Uri>    urls = new List <Uri>();
                        StringBuilder sb   = new StringBuilder();
                        foreach (Attachment attachment in message.Attachments)
                        {
                            var photo = attachment;
                            sb.AppendFormat(photo.Instance.OwnerId.ToString() + "_");
                            sb.AppendFormat(photo.Instance.Id.ToString() + "_");
                            sb.AppendFormat(photo.Instance.AccessKey.ToString());
                            var _photos = api.Photo.GetById(new string[] { sb.ToString() }, photoSizes: true);
                            sb.Clear();
                            //finalUrl+=_photos[0].Sizes[_photos[0].Sizes.Count - 1].Url.ToString()+"\n";
                            //finalUrl += _photos[0];
                            ulong     maxHW   = 0;
                            PhotoSize maxSize = null;
                            foreach (PhotoSize ps in _photos[0].Sizes)
                            {
                                if (ps.Height + ps.Width > maxHW)
                                {
                                    maxHW   = ps.Height + ps.Width;
                                    maxSize = ps;
                                }
                            }
                            //finalUrl += maxSize.Url.ToString() + "\n";
                            urls.Add(maxSize.Url);
                        }
                        int fileNumber = rand.Next(int.MaxValue);
                        foreach (Uri url in urls)
                        {
                            try
                            {
                                WebRequest wr = WebRequest.Create(url.ToString());
                                using (Stream stream = wr.GetResponse().GetResponseStream())
                                {
                                    System.Drawing.Image img = System.Drawing.Image.FromStream(stream);
                                    DirectoryInfo        di  = new DirectoryInfo(config.Path);
                                    while (di.GetFiles(fileNumber.ToString() + ".png").Length != 0)
                                    {
                                        fileNumber = rand.Next(int.MaxValue);
                                    }
                                    img.Save(config.Path + "\\" + fileNumber + ".png");
                                    Console.WriteLine(fileNumber + ".png saved");
                                }
                            }
                            catch
                            {
                                Console.WriteLine("Image " + url + " is broken, proceed...");
                            }
                        }

                        /*Console.WriteLine("send to " + message.PeerId + " message\n" + finalUrl);
                         * api.Messages.Send(new MessagesSendParams()
                         * {
                         *  PeerId = message.PeerId,
                         *  Message = finalUrl,
                         *  RandomId = rand.Next(int.MaxValue)
                         * });*/
                    }
                }
            }
        }