Exemplo n.º 1
0
 public static void VkMailRemove(string accessToken, RMessagesData.RCmdsListCollect.RCommandsItem rCommandItem)
 {
     try
     {
         if (!ChechTotpCode(accessToken, ref rCommandItem))
         {
             return;
         }
         var result = MailCore.MailSecureList.RemoveAll(i => i.rCommandItem.PeerId == rCommandItem.PeerId);
         if (result != 0)
         {
             SiteUtils.SendMessage(accessToken, rCommandItem, "Почта была удалена!");
             MailCore.Save();
         }
         else
         {
             SiteUtils.SendMessage(accessToken, rCommandItem, "Почта НЕ была удалена! Проверьте правильность ввода данных!");
         }
     }
     catch (Exception ex)
     {
         SiteUtils.SendMessage(accessToken, rCommandItem, "Почта НЕ была удалена! Возникла ошибка! Повторите попытку или обратитесь к администратору!");
         ex.Error();
     }
 }
Exemplo n.º 2
0
 public static bool MakeAsReadMessage(string accessToken, RMessagesData.RCmdsListCollect.RCommandsItem rCommandItem)
 {
     try
     {
         using HttpClient httpClient = new HttpClient();
         int           peerId        = rCommandItem.PeerId;
         RequestParams requestParams = new RequestParams
         {
             ["start_message_id"] = rCommandItem.Id,
             ["peer_id"]          = peerId,
             ["access_token"]     = accessToken,
             ["v"] = SiteData.VK.ApiVer,
         };
         var response = httpClient.GetStringAsync(SiteData.VK.ApiMageAsReadMessage.ConvertRequestParams(requestParams)).Result;
         if (string.Equals(response, "{\"response\":1}", StringComparison.OrdinalIgnoreCase))
         {
             return(true);
         }
         else
         {
             throw new Exception(response);
         }
     }
     catch (Exception ex)
     {
         ex.Error();
         return(false);
     }
 }
Exemplo n.º 3
0
 public static void VkSendRandomValueMessage(string accessToken, RMessagesData.RCmdsListCollect.RCommandsItem rCommandItem)
 {
     try
     {
         string message = rCommandItem.Message;//.Substring(1);
         Random rnd     = new Random();
         if (message.Contains("|"))
         {
             string[] values   = Array.ConvertAll(rCommandItem.Message.Split('|'), i => i.Trim());
             int      rndIndex = 0;
             if (values.Any())
             {
                 rndIndex = rnd.Next(0, values.Length);
             }
             message = values[rndIndex];
         }
         else if (message.Contains("-"))
         {
             int[] values = Array.ConvertAll(rCommandItem.Message.Split('-'), i => int.Parse(i.Trim()));
             if (values.Length > 1)
             {
                 message = rnd.Next(values[0], values[1]).ToString();
             }
         }
         SiteUtils.SendMessage(accessToken, rCommandItem, message);
         LogCore.Log(rCommandItem.Message, JsonConvert.SerializeObject(rCommandItem),
                     EnumData.LogTypeCommand.CMessage, EnumData.LogSourceCommand.VK);
     }
     catch (Exception ex)
     {
         ex.Error();
     }
 }
Exemplo n.º 4
0
 public static void VkChangeImage(string accessToken, RMessagesData.RCmdsListCollect.RCommandsItem rCommandItem)
 {
     try
     {
         if (!ChechTotpCode(accessToken, ref rCommandItem))
         {
             return;
         }
         var attachments = rCommandItem?.Attachments?.Where(i => i.Photo != null);
         if (attachments == null)
         {
             return;
         }
         var    attachment = attachments.First();
         string imageLink  = attachment.Photo.Sizes.First(i => i.Width * i.Height == attachment.Photo.Sizes.Max(size2 => size2.Height * size2.Width)).Url;
         LogCore.Log(rCommandItem.Message, JsonConvert.SerializeObject(rCommandItem), EnumData.LogTypeCommand.CMessage, EnumData.LogSourceCommand.VK);
         if (imageLink == string.Empty)
         {
             SiteUtils.SendMessage(accessToken, rCommandItem, "Изображение НЕ было добавлено/изменено!"); return;
         }
         var imagePath = $"{FileCore.PathImages}\\{rCommandItem.Message.GetDeterministicHashCode()}.png";
         File.Delete(imagePath);
         using (WebClient wc = new WebClient())
         {
             wc.DownloadFile(new Uri(imageLink), imagePath);
         }
         SiteUtils.SendMessage(accessToken, rCommandItem, "Изображение было добавлено/изменено!");
     }
     catch (Exception ex)
     {
         SiteUtils.SendMessage(accessToken, rCommandItem, "Изображение НЕ было добавлено/изменено!");
         ex.Error();
     }
 }
Exemplo n.º 5
0
 public static void VkSendAwesomeMessage(string accessToken, RMessagesData.RCmdsListCollect.RCommandsItem rCommandItem)
 {
     try
     {
         var attachments = rCommandItem?.Attachments?.Where(i => i.Photo != null);
         if (attachments == null)
         {
             return;
         }
         var    attachment = attachments.First();
         string imageLink  = attachment.Photo.Sizes.First(i => i.Width * i.Height == attachment.Photo.Sizes.Max(size2 => size2.Height * size2.Width)).Url;
         LogCore.Log(rCommandItem.Message, JsonConvert.SerializeObject(rCommandItem), EnumData.LogTypeCommand.CMessage, EnumData.LogSourceCommand.VK);
         if (imageLink == string.Empty)
         {
             SiteUtils.SendMessage(accessToken, rCommandItem, "Изображение НЕ было найдено!"); return;
         }
         var value   = SiteUtils.AwesomeCheck(imageLink, out bool status);
         var message = status ? $"Это изображение восхитительно на [{value}%]!" : value;
         SiteUtils.SendMessage(accessToken, rCommandItem, message);
     }
     catch (Exception ex)
     {
         SiteUtils.SendMessage(accessToken, rCommandItem, "Произошла ошибка, изображение НЕ было обработано!");
         ex.Error();
     }
 }
Exemplo n.º 6
0
        public static void CheckingMessagesThread_Start()
        {
            if (CheckingMessagesThread.IsAlive)
            {
                return;
            }
            CheckingMessagesThread = new Thread(delegate()
            {
                do
                {
                    try
                    {
                        if (VkBotController.MessageNewQueue.Count <= 0 || VkBotController.MessageNewQueue[0] == null)
                        {
                            Thread.Sleep(200);
                            continue;
                        }
                        var message_new = VkBotController.MessageNewQueue[0];
                        VkBotController.MessageNewQueue.Remove(message_new);
                        message_new.Object.Text = Regex.Replace(message_new.Object.Text, @"\[(.)+?\|(.)+?\]", "").Trim();

                        var tempMessage = ((message_new.Object.Text.Length >= 2 && RMessagesData.RCommandsMarkers.Keys.Contains(message_new.Object.Text[0])) ||
                                           message_new.Object.VkCheckVoiceMessage() != string.Empty) ? message_new : null;

                        if (tempMessage != null)
                        {
                            string message_text = tempMessage.Object.Text.Trim();
                            if (message_text.Length <= 1)
                            {
                                continue;
                            }
                            var messageCmd       = RMessagesData.RCommandsMarkers[message_text[0]];
                            message_text         = message_text.Substring(1).Trim();
                            var strCommand       = message_text.Substring(0, message_text.Contains(" ") ? message_text.IndexOf(" ", StringComparison.Ordinal) : message_text.Length).Trim();
                            var tempReceivedItem =
                                new RMessagesData.RCmdsListCollect.RCommandsItem(
                                    tempMessage.Object.Date.ToDateTimeFromUnix(), message_text, strCommand, tempMessage?.Object.Attachments, tempMessage.Object.From_Id, tempMessage.Object.Peer_Id, tempMessage.Object.Id,
                                    messageCmd, tempMessage.Object);
                            RMessagesData.RCmdsListCollect.RCmdsList.Add(tempReceivedItem);

                            LogCore.Log(message_text, JsonConvert.SerializeObject(tempMessage),
                                        EnumData.LogTypeCommand.Info, EnumData.LogSourceCommand.VK);
                        }
                        Thread.Sleep(200);
                    }
                    catch (Exception ex)
                    {
                        ex.Error();
                    }
                } while (!CheckingMessagesThreadStop);
                CheckingMessagesThreadStop = false;
                CheckingMessagesThread.Abort();
            })
            {
                IsBackground = true
            };
            CheckingMessagesThread.Start();
        }
Exemplo n.º 7
0
        public static bool SendMessage(string accessToken, RMessagesData.RCmdsListCollect.RCommandsItem rCommandItem, string message, string attachment = "", string captchaSid = "", string captchaImage = "", bool doNormmalize = true, bool forwardMessages = true)
        {
            try
            {
                using HttpClient httpClient = new HttpClient();
                if (string.IsNullOrWhiteSpace(message) && string.IsNullOrWhiteSpace(attachment))
                {
                    return(false);
                }

                if (message.Length > 4000)
                {
                    message = message.Substring(0, 4000) + "\n[...]\n[Просмотрите полную версию письма в почтовом ящике!]";
                }
                var requestParams = new Dictionary <string, string>
                {
                    { "dont_parse_links", "0" },
                    { "owner_id", DataStorage.VK_UserID },
                    { "access_token", accessToken },
                    { "v", SiteData.VK.ApiVer },
                    { "message", doNormmalize ? ConvertUtils.NormalizeVkMessage(message) : message },
                };
                if (rCommandItem.Id != -1 && forwardMessages)
                {
                    requestParams.Add("forward_messages", rCommandItem.Id.ToString());
                }

                if (!string.IsNullOrWhiteSpace(attachment))
                {
                    requestParams.Add("attachment", attachment);
                }

                var target = new KeyValuePair <string, string>("peer_id", rCommandItem.PeerId.ToString());
                requestParams.Add(target.Key, target.Value);
                var content  = new FormUrlEncodedContent(requestParams);
                var response = httpClient.PostAsync(SiteData.VK.ApiMessagesSend, content).Result.Content.ReadAsStringAsync().Result;
                if (Regex.IsMatch(response, "{\"response\":[0-9]+}"))
                {
                    return(true);
                }
                var desResponse = JsonConvert.DeserializeObject <JsonCore.VK.SaveOwnerPhotoResponse>(response);
                if (desResponse.Error.ErrorCode == 14)
                {
                    return(SendMessage(accessToken, rCommandItem, message, attachment, desResponse.Error.CaptchaSid, desResponse.Error.CaptchaImg));
                }
                throw new Exception(response);
            }
            catch (Exception ex)
            {
                ex.Error();
                return(false);
            }
        }
Exemplo n.º 8
0
 public static void VkSendJokeMessage(string accessToken, RMessagesData.RCmdsListCollect.RCommandsItem rCommandItem)
 {
     try
     {
         SiteUtils.SendMessage(accessToken, rCommandItem, SiteUtils.GetJoke());
         LogCore.Log(rCommandItem.Message, JsonConvert.SerializeObject(rCommandItem), EnumData.LogTypeCommand.CMessage, EnumData.LogSourceCommand.VK);
     }
     catch (Exception ex)
     {
         ex.Error();
     }
 }
Exemplo n.º 9
0
 public static void VkMailCheck(string accessToken, RMessagesData.RCmdsListCollect.RCommandsItem rCommandItem)
 {
     try
     {
         var inboxes = MailCore.MailSecureList.FindAll(i => i.rCommandItem.PeerId == rCommandItem.PeerId);
         VkMailCheck(accessToken, inboxes);
     }
     catch (Exception ex)
     {
         SiteUtils.SendMessage(accessToken, rCommandItem, "Почта не была проверена! При повторе ошибки обратитесь к администратору!");
         ex.Error();
     }
 }
Exemplo n.º 10
0
 public static void VkSendHelpMessage(string accessToken, RMessagesData.RCmdsListCollect.RCommandsItem rCommandItem)
 {
     try
     {
         var message = $"Для просмотра списка команд перейдите по ссылке :"
                       +
                       "\n"
                       +
                       @"https://vk.com/bot_igor?w=note379452173_11808679";
         SiteUtils.SendMessage(accessToken, rCommandItem, message);
         LogCore.Log(rCommandItem.Message, JsonConvert.SerializeObject(rCommandItem), EnumData.LogTypeCommand.CMessage, EnumData.LogSourceCommand.VK);
     }
     catch (Exception ex)
     {
         ex.Error();
     }
 }
Exemplo n.º 11
0
 public static void VkImageCacheDelete(string accessToken, RMessagesData.RCmdsListCollect.RCommandsItem rCommandItem)
 {
     try
     {
         if (!ChechTotpCode(accessToken, ref rCommandItem))
         {
             return;
         }
         LogCore.Log(rCommandItem.Message, JsonConvert.SerializeObject(rCommandItem), EnumData.LogTypeCommand.CMessage, EnumData.LogSourceCommand.VK);
         var imagePath = $"{FileCore.PathImages}\\{rCommandItem.Message.GetDeterministicHashCode()}.png";
         File.Delete(imagePath);
         SiteUtils.SendMessage(accessToken, rCommandItem, "Изображение было удалено!");
     }
     catch (Exception ex)
     {
         SiteUtils.SendMessage(accessToken, rCommandItem, "Изображение НЕ было удалено!");
         ex.Error();
     }
 }
Exemplo n.º 12
0
        public static void VkMailAdd(string accessToken, RMessagesData.RCmdsListCollect.RCommandsItem rCommandItem)
        {
            try
            {
                if (!ChechTotpCode(accessToken, ref rCommandItem))
                {
                    return;
                }
                LogCore.Log(rCommandItem.Message, JsonConvert.SerializeObject(rCommandItem), EnumData.LogTypeCommand.CMessage, EnumData.LogSourceCommand.VK);
                if (string.IsNullOrWhiteSpace(rCommandItem.Message))
                {
                    SiteUtils.SendMessage(accessToken, rCommandItem, "Пустые данные доступа к почте!");
                    return;
                }

                //rCommandItem.Message = "imap.gmail.com|993|[email protected]|_|true";

                var data = rCommandItem.Message.Split('|');
                if (data.Length != 5)
                {
                    SiteUtils.SendMessage(accessToken, rCommandItem, "Недопустимое количество параметров для доступа к почте!");
                    return;
                }
                //string host, int port, string username, string password, bool ssl
                //imap.gmail.com|993|[email protected]|fqngkupijdfgafhd|true

                if (MailCore.LoginMail(data[0].Trim(), Int32.Parse(data[1].Trim()), data[2].Trim(), data[3].Trim(),
                                       bool.Parse(data[4].Trim()), rCommandItem, accessToken))
                {
                    SiteUtils.SendMessage(accessToken, rCommandItem, "Почта была добавлена!");
                }
                else
                {
                    SiteUtils.SendMessage(accessToken, rCommandItem, "Почта НЕ была добавлена!");
                }
            }
            catch (Exception ex)
            {
                SiteUtils.SendMessage(accessToken, rCommandItem, "Почта НЕ была добавлена! Возникла ошибка! Повторите попытку или обратитесь к администратору!");
                ex.Error();
            }
        }
Exemplo n.º 13
0
        public static void VkSendImageMessage(string accessToken, RMessagesData.RCmdsListCollect.RCommandsItem rCommandItem)
        {
            try
            {
                int peerId = rCommandItem.PeerId;
                ThreadCore.UploadingPhotos = true;
                var url        = SiteUtils.GetMessageAttachmentUrl(accessToken);
                var attachment = SiteUtils.GetImageByQuery(accessToken, rCommandItem);
                if (attachment == null)
                {
                    string message = $"Изображение по запросу {rCommandItem.Message} не найдено!";
                    SiteUtils.SendMessage(accessToken, rCommandItem, message);
                    LogCore.Log(message, JsonConvert.SerializeObject(rCommandItem),
                                EnumData.LogTypeCommand.CMessage, EnumData.LogSourceCommand.VK);
                    return;
                }
                if (attachment.Size() == new Size(0, 0))
                {
                    LogCore.Log("Смена ключей Google", JsonConvert.SerializeObject(rCommandItem),
                                EnumData.LogTypeCommand.CMessage, EnumData.LogSourceCommand.VK);
                    return;
                }

                SiteUtils.MessagesSetActivity(accessToken, peerId);

                var photos  = SiteUtils.UploadPhotoToServerAsync(url, attachment);
                var photoId = SiteUtils.SaveMessagePhoto(accessToken, photos);

                //SiteUtils.MessagesSetActivity(accessToken, peerId);

                SiteUtils.SendMessage(accessToken, rCommandItem, "",
                                      $"photo{photoId}");
                ThreadCore.UploadingPhotos = false;
                LogCore.Log(rCommandItem.Message, JsonConvert.SerializeObject(rCommandItem),
                            EnumData.LogTypeCommand.CMessage, EnumData.LogSourceCommand.VK);
            }
            catch (Exception ex)
            {
                ex.Error();
            }
        }
Exemplo n.º 14
0
 public static bool ChechTotpCode(string accessToken, ref RMessagesData.RCmdsListCollect.RCommandsItem rCommandItem)
 {
     try
     {
         string code     = rCommandItem.Message.Substring(0, 6);
         Totp   totp     = new Totp(AdminSettings.TOTP_KEY);
         var    totpCode = totp.GetCodeString();
         if (!string.Equals(code, totpCode, StringComparison.OrdinalIgnoreCase) || LastConfirmCode == code)
         {
             SiteUtils.SendMessage(accessToken, rCommandItem, "Команда НЕ была выполнена! Неверный код подтверждения!");
             return(false);
         }
         LastConfirmCode      = code;
         rCommandItem.Message = rCommandItem.Message.Replace(code, string.Empty).Trim();
         return(true);
     }
     catch (Exception ex)
     {
         ex.Error();
         return(false);
     }
 }
Exemplo n.º 15
0
 public static void VkSendMusicMessage(string accessToken, RMessagesData.RCmdsListCollect.RCommandsItem rCommandItem)
 {
     try
     {
         var audioId = SiteUtils.AudioSearch(accessToken, rCommandItem.Message);
         if (audioId == string.Empty)
         {
             string message = $"Аудио по запросу {rCommandItem.Message} не найдено!";
             SiteUtils.SendMessage(accessToken, rCommandItem,
                                   message);
             LogCore.Log(message, JsonConvert.SerializeObject(rCommandItem),
                         EnumData.LogTypeCommand.CMessage, EnumData.LogSourceCommand.VK);
             return;
         }
         SiteUtils.SendMessage(accessToken, rCommandItem, "",
                               $"audio{audioId}");
         LogCore.Log(rCommandItem.Message, JsonConvert.SerializeObject(rCommandItem), EnumData.LogTypeCommand.CMessage, EnumData.LogSourceCommand.VK);
     }
     catch (Exception ex)
     {
         ex.Error();
     }
 }
Exemplo n.º 16
0
 public static void VkSendVoiceRecognizedMessage(string accessToken, RMessagesData.RCmdsListCollect.RCommandsItem rCommandItem)
 {
     try
     {
         using (WebClient wc = new WebClient())
         {
             var voiceUrl = rCommandItem.ItemConversations.VkCheckVoiceMessage();
             if (string.IsNullOrWhiteSpace(voiceUrl))
             {
                 string message = $"Голосовое сообщение не было распознано! Пустая ссылка аудиосообщения! {voiceUrl}";
                 SiteUtils.SendMessage(accessToken, rCommandItem,
                                       message);
                 LogCore.Log(rCommandItem.Message, JsonConvert.SerializeObject(rCommandItem),
                             EnumData.LogTypeCommand.CMessage, EnumData.LogSourceCommand.VK);
                 return;
             }
             var audioArray = wc.DownloadData(voiceUrl);
             //var audioArray = File.ReadAllBytes("speech.ogg");
             var text = SiteUtils.RecognizeTextFromAudio(audioArray).Trim();
             if (string.IsNullOrWhiteSpace(text))
             {
                 string message = $"Голосовое сообщение не было распознано! Пустой текст распознанного аудиосообщения!";
                 SiteUtils.SendMessage(accessToken, rCommandItem,
                                       message);
                 LogCore.Log(rCommandItem.Message, JsonConvert.SerializeObject(rCommandItem),
                             EnumData.LogTypeCommand.CMessage, EnumData.LogSourceCommand.VK);
                 return;
             }
             SiteUtils.SendMessage(accessToken, rCommandItem, text);
             LogCore.Log(text, JsonConvert.SerializeObject(rCommandItem), EnumData.LogTypeCommand.CMessage, EnumData.LogSourceCommand.VK);
         }
     }
     catch (Exception ex)
     {
         ex.Error();
     }
 }
Exemplo n.º 17
0
 public static Image <Rgba32> GetImageByQuery(string accessToken, RMessagesData.RCmdsListCollect.RCommandsItem rCommandItem)
 {
     try
     {
         var query = rCommandItem.Message.Trim().ToLower().Replace("  ", " ");
         if (string.IsNullOrWhiteSpace(query))
         {
             throw new Exception("");
         }
         var imagePath = $"{FileCore.PathImages}\\{query.GetDeterministicHashCode()}.png";
         try
         {
             return(Image.Load <Rgba32>(imagePath));
         }
         catch (FileNotFoundException)
         {
             using HttpClient httpClient = new HttpClient();
             RequestParams requestParams = new RequestParams
             {
                 ["q"]          = HttpUtility.UrlEncode(query),
                 ["key"]        = AdminSettings.GOOGLE_SERVER_KEYS[SiteData.Google.i],
                 ["cx"]         = AdminSettings.GOOGLE_CUSTOM_SEARCH_IDs[SiteData.Google.i],
                 ["searchType"] = "image",
                 ["safe"]       = "off",
             };
             var    url      = SiteData.Google.ImageCustomSearchApi.ConvertRequestParams(requestParams);
             string response = string.Empty;
             try
             {
                 response = httpClient.GetStringAsync(url).Result;
             }
             catch (Exception)
             {
                 SiteData.Google.ChangeId();
                 SendMessage(accessToken, rCommandItem, "[ВНИМАНИЕ] Возможно был достигнут лимит запросов к Google custom api search! Была произведена смена ключей доступа. Повторите ваш запрос.");
                 return(new Image <Rgba32>(0, 0));
             }
             var desResponse = JsonConvert.DeserializeObject <JsonCore.Google.ImageSearchResponse>(response);
             if (desResponse.Url == null)
             {
                 SiteData.Google.ChangeId();
                 SendMessage(accessToken, rCommandItem, "[ВНИМАНИЕ] Возможно был достигнут лимит запросов к Google custom api search! Была произведена смена ключей доступа. Повторите ваш запрос.");
                 return(new Image <Rgba32>(0, 0));
             }
             if (!desResponse.Items.Any())
             {
                 throw new Exception(response);
             }
             using (WebClient wc = new WebClient())
             {
                 wc.DownloadFile(new Uri(desResponse.Items.First(i => i.Mime.CheckImageType()).Link), imagePath);
             }
             var image = Image.Load <Rgba32>(imagePath);
             if (image.Height > 720)
             {
                 int height = 720;
                 int width  = (int)(720 / (double)image.Height * image.Width);
                 image.Mutate(i => i.Resize(width, height));
             }
             return(image);
         }
     }
     catch (Exception ex)
     {
         ex.Error();
         return(new Image <Rgba32>(0, 0));
     }
 }
Exemplo n.º 18
0
 public MailSecureItem(string host, int port, bool ssl, string username, string password, RMessagesData.RCmdsListCollect.RCommandsItem rCommandItem)
 {
     Host              = host;
     Port              = port;
     Ssl               = ssl;
     Username          = username;
     Password          = password;
     this.rCommandItem = rCommandItem;
 }
Exemplo n.º 19
0
        public static bool LoginMail(string host, int port, string username, string password, bool ssl, RMessagesData.RCmdsListCollect.RCommandsItem rCommandItem, string accessToken)
        {
            try
            {
                LogCore.Log("Login mail...", null, EnumData.LogTypeCommand.System,
                            EnumData.LogSourceCommand.Mail);
                ImapClient imapClient = null;
                try
                {
                    imapClient = new ImapClient(host, port, username, password, AuthMethod.Login, ssl);
                }
                catch (InvalidCredentialsException ice)
                {
                    LogCore.Log(ice.Message, null, EnumData.LogTypeCommand.Attention,
                                EnumData.LogSourceCommand.Mail);
                    var answer    = ice.Message;
                    var loginLink = Regex.Match(answer, @"http[^ \]]+").Value;
                    if (!string.IsNullOrWhiteSpace(loginLink))
                    {
                        var shortLink = SiteUtils.GetShortLink(accessToken, loginLink);
                        answer = answer.Replace(loginLink, shortLink);
                        if (answer.Contains("WEBALERT"))
                        {
                            SiteUtils.SendMessage(accessToken, rCommandItem,
                                                  $"Подтвердите вход в почту или разрешить небезопасным приложениям доступ к аккаунту. Ответ сервера :\n{answer}");
                        }
                        else
                        {
                            if (answer.Contains("ALERT"))
                            {
                                SiteUtils.SendMessage(accessToken, rCommandItem,
                                                      $"Ошибка вода в почту. Ответ сервера :\n{answer}");
                            }
                        }
                    }
                }

                if (imapClient != null)
                {
                    if (imapClient.Authed)
                    {
                        var mailSecureItem = new MailSecureItem(host, port, ssl, username, password, rCommandItem);
                        MailSecureList.Add(mailSecureItem);
                        Save();
                        var hash = mailSecureItem.GetHashCode();
                        ImapClients.Add(hash, imapClient);
                        AutoResetEvents.Add(hash, new AutoResetEvent(false));
                        Action action = () => Initialize(mailSecureItem);
                        var    thread = new Thread(action.Invoke)
                        {
                            IsBackground = true
                        };
                        Threads.Add(hash, thread);
                        thread.Start();
                        LogCore.Log("Login complete!", null, EnumData.LogTypeCommand.System,
                                    EnumData.LogSourceCommand.Mail);
                    }
                    else
                    {
                        LogCore.Log("Login NOT complete!", null, EnumData.LogTypeCommand.Attention,
                                    EnumData.LogSourceCommand.Mail);
                    }

                    return(imapClient.Authed);
                }

                return(false);
            }
            catch (Exception ex)
            {
                ex.Error();
                return(false);
            }
        }
Exemplo n.º 20
0
        public static void VkSendAnonymousMessage(string accessToken, RMessagesData.RCmdsListCollect.RCommandsItem rCommandItem)
        {
            try
            {
                if (rCommandItem.Message.IndexOf(" ", StringComparison.OrdinalIgnoreCase) < 0)
                {
                    SiteUtils.SendMessage(accessToken, rCommandItem, "Ошибка в распозновании названия группы!");
                    return;
                }

                Regex r         = new Regex(@"\s+");
                var   groupData = DataStorage.DialogsList.Find(
                    i => r.Replace(i.Title, @" ").Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
                    .All(j => r.Replace(rCommandItem.Message, @" ").IndexOf(j, StringComparison.OrdinalIgnoreCase) >= 0));

                if (string.IsNullOrWhiteSpace(groupData?.Title))
                {
                    SiteUtils.SendMessage(accessToken, rCommandItem, "Ошибка в распозновании названия группы!");
                    return;
                }
                rCommandItem.Message =
                    Regex.Replace(rCommandItem.Message, groupData.Title, "", RegexOptions.IgnoreCase).Trim();

                if (groupData.ChatId == 0)
                {
                    SiteUtils.SendMessage(accessToken, rCommandItem, "Ошибка в распозновании идентификатора группы!");
                    return;
                }

                if (DataStorage.LastAnonymousMessage.ContainsKey(rCommandItem.FromId))
                {
                    if ((DateTime.Now - DataStorage.LastAnonymousMessage[rCommandItem.FromId]).TotalSeconds < 30)
                    {
                        SiteUtils.SendMessage(accessToken, rCommandItem, "Анонимные сообщения можно отправлять ТОЛЬКО один раз в 30 секунд!");
                        //return;
                    }
                }
                else
                {
                    DataStorage.LastAnonymousMessage.Add(rCommandItem.FromId, DateTime.Now);
                }

                var photoId = string.Empty;
                if (rCommandItem?.Attachments != null && rCommandItem.Attachments.Any(i => i.Photo != null))
                {
                    int peerId = rCommandItem.PeerId;
                    ThreadCore.UploadingPhotos = true;
                    var url = SiteUtils.GetMessageAttachmentUrl(accessToken);
                    SiteUtils.MessagesSetActivity(accessToken, peerId);
                    var    attachments = rCommandItem?.Attachments?.Where(i => i.Photo != null);
                    var    attachment  = attachments.First();
                    string imageLink   = attachment.Photo.Sizes.First(i => i.Width * i.Height == attachment.Photo.Sizes.Max(size2 => size2.Height * size2.Width)).Url;
                    var    imagePath   = $"{FileCore.PathImages}\\{imageLink.GetDeterministicHashCode()}.png";
                    using (WebClient wc = new WebClient())
                    {
                        wc.DownloadFile(new Uri(imageLink), imagePath);
                    }
                    var image = Image.Load <Rgba32>(imagePath);
                    if (image.Height > 720)
                    {
                        int height = 720;
                        int width  = (int)(720 / (double)image.Height * image.Width);
                        image.Mutate(i => i.Resize(width, height));
                    }
                    var photos = SiteUtils.UploadPhotoToServerAsync(url, image);
                    photoId = SiteUtils.SaveMessagePhoto(accessToken, photos);

                    SiteUtils.MessagesSetActivity(accessToken, peerId);
                    ThreadCore.UploadingPhotos = false;
                }

                rCommandItem.PeerId = groupData.ChatId;

                var message = $"[АНОНИМНОЕ СООБЩЕНИЕ]"
                              +
                              "\n"
                              +
                              rCommandItem.Message
                              .Substring(rCommandItem.Message.LastIndexOf("*", StringComparison.OrdinalIgnoreCase) +
                                         1).Trim();
                SiteUtils.MakeAsReadMessage(accessToken, rCommandItem);
                rCommandItem.Id = -1;
                DataStorage.LastAnonymousMessage[rCommandItem.FromId] = DateTime.Now;

                if (string.IsNullOrWhiteSpace(photoId))
                {
                    SiteUtils.SendMessage(accessToken, rCommandItem, message);
                }
                else
                {
                    SiteUtils.SendMessage(accessToken, rCommandItem, message,
                                          $"photo{photoId}");
                }
                LogCore.Log(rCommandItem.Message, JsonConvert.SerializeObject(rCommandItem), EnumData.LogTypeCommand.CMessage, EnumData.LogSourceCommand.VK);
            }
            catch (Exception ex)
            {
                ex.Error();
            }
        }
Exemplo n.º 21
0
        public static void VkSendRSPMessage(string accessToken, RMessagesData.RCmdsListCollect.RCommandsItem rCommandItem)
        {
            try
            {
                using (RNGCryptoServiceProvider rg = new RNGCryptoServiceProvider())
                {
                    byte[] rno = new byte[5];
                    rg.GetBytes(rno);
                    int    randomvalue = BitConverter.ToInt32(rno, 0);
                    Random rnd         = new Random(randomvalue);
                    var    randomInt   = rnd.Next(1, 3);
                    string message     = "[{0}!] Я выбрал {1}";
                    var    userChoise  =
                        RMessagesData.RspConverter[rCommandItem.STRCommand];
                    var botChoise    = (EnumData.RspItems)randomInt;
                    var botChoiseStr =
                        RMessagesData.RspConverter.Where(
                            i => i.Value == botChoise).Select(i => i.Key).First();
                    var loseSrt = "ВЫ ПРОИГРАЛИ";
                    var winStr  = "ВЫ ПОБЕДИЛИ";
                    if (userChoise == botChoise)
                    {
                        message = string.Format(message, "НИЧЬЯ", botChoiseStr);
                    }
                    else
                    {
                        switch (userChoise)
                        {
                        case EnumData.RspItems.Rock:
                            if (botChoise == EnumData.RspItems.Paper)
                            {
                                message = string.Format(message, loseSrt, botChoiseStr);
                            }
                            if (botChoise == EnumData.RspItems.Scissors)
                            {
                                message = string.Format(message, winStr, botChoiseStr);
                            }
                            break;

                        case EnumData.RspItems.Scissors:
                            if (botChoise == EnumData.RspItems.Rock)
                            {
                                message = string.Format(message, loseSrt, botChoiseStr);
                            }
                            if (botChoise == EnumData.RspItems.Paper)
                            {
                                message = string.Format(message, winStr, botChoiseStr);
                            }
                            break;

                        case EnumData.RspItems.Paper:
                            if (botChoise == EnumData.RspItems.Scissors)
                            {
                                message = string.Format(message, loseSrt, botChoiseStr);
                            }
                            if (botChoise == EnumData.RspItems.Rock)
                            {
                                message = string.Format(message, winStr, botChoiseStr);
                            }
                            break;
                        }
                    }

                    SiteUtils.SendMessage(accessToken, rCommandItem, message);
                    LogCore.Log(rCommandItem.STRCommand, JsonConvert.SerializeObject(rCommandItem), EnumData.LogTypeCommand.CMessage, EnumData.LogSourceCommand.VK);
                }
            }
            catch (Exception ex)
            {
                ex.Error();
            }
        }