示例#1
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();
     }
 }
示例#2
0
 public static bool SaveOwnerPhoto(string accessToken, JsonCore.VK.UploadPhotoInfoResponse photoInfo)
 {
     try
     {
         using HttpClient httpClient = new HttpClient();
         do
         {
             RequestParams requestParams = new RequestParams
             {
                 ["server"]       = photoInfo.Server,
                 ["hash"]         = photoInfo.Hash,
                 ["photo"]        = photoInfo.Photo,
                 ["access_token"] = accessToken,
                 ["v"]            = SiteData.VK.ApiVer,
             };
             var response    = httpClient.GetStringAsync(SiteData.VK.ApiPhotosSaveOwnerPhoto.ConvertRequestParams(requestParams)).Result;
             var desResponse = JsonConvert.DeserializeObject <JsonCore.VK.SaveOwnerPhotoResponse>(response);
             if (desResponse.Error?.ErrorCode == 14)
             {
                 LogCore.Log(desResponse.Error.ErrorMsg, response, EnumData.LogTypeCommand.Error, EnumData.LogSourceCommand.VK);
                 continue;
             }
             DeletePost(accessToken, desResponse.Response.PostId);
             return(desResponse.Response.Saved == 1);
         } while (true);
     }
     catch (Exception ex)
     {
         ex.Error();
         return(false);
     }
 }
示例#3
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();
     }
 }
示例#4
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();
     }
 }
示例#5
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();
        }
示例#6
0
        public static void DActionLog(this int hash)
        {
            if (!DActionDic.ContainsKey(hash))
            {
                return;
            }
            string action = DActionDic[hash];

            LogCore.Log(action.Replace("...", "OK"), null, EnumData.LogTypeCommand.InfoSuccess, EnumData.LogSourceCommand.Other);
            DActionDic.Remove(hash);
        }
示例#7
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();
     }
 }
示例#8
0
        public static int DActionLog(this string action)
        {
            var hashCode = action.GetHashCode();

            if (DActionDic.ContainsKey(hashCode))
            {
                DActionDic.Remove(hashCode);
            }
            DActionDic.Add(hashCode, action);
            LogCore.Log(action, null, EnumData.LogTypeCommand.Info, EnumData.LogSourceCommand.Other);
            return(action.GetHashCode());
        }
示例#9
0
        public static void Main(string[] args)
        {
            LogCore.LogWriteStart();
            FileCore.CreateHidFolder();
            ThreadCore.AccountSetOnlineStart();

            ThreadCore.CheckingMessagesThread_Start();
            ThreadCore.CommandExecutionThread_Start();
            MailCore.Read();
            MailCore.InitializeInboxes();

            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

            CreateHostBuilder(args).Build().Run();
        }
示例#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();
     }
 }
示例#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();
     }
 }
示例#12
0
 public static void Error(this Exception e)
 {
     Task.Factory.StartNew((() =>
     {
         try
         {
             LogCore.Log(e.Message, $"{e}\n{e.TargetSite}\n",
                         EnumData.LogTypeCommand.Error, EnumData.LogSourceCommand.Other);
             //MessageBox.Show(e.Message, "Error!", MessageBoxButtons.OK);
         }
         catch (AccessViolationException)
         {
         }
         catch (Exception ex)
         {
             Error(ex);
         }
     }));
 }
示例#13
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();
            }
        }
示例#14
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();
            }
        }
示例#15
0
        public static void Initialize(MailSecureItem mailSecureItem)
        {
            LogCore.Log($"Initializing mail [{mailSecureItem.Username}]", null, EnumData.LogTypeCommand.System,
                        EnumData.LogSourceCommand.Mail);
            while (true)
            {
                try
                {
                    var hash = mailSecureItem.GetHashCode();
                    ImapClients[hash]?.Dispose();
                    ImapClients.Remove(hash);
                    ImapClients.Add(hash, new ImapClient(mailSecureItem.Host, mailSecureItem.Port, mailSecureItem.Username, mailSecureItem.Password, AuthMethod.Login, mailSecureItem.Ssl));
                    ImapClients[hash].IdleError += (sender, args) =>
                    {
                        args.Exception.Error();
                        AutoResetEvents[hash].Set();
                    };

                    ImapClients[hash].NewMessage += (sender, args) =>
                    {
                        try
                        {
                            var letter = args.Client.GetMessage(args.MessageUID, FetchOptions.NoAttachments);
                            SiteUtils.SendMessage(SiteData.VK.GetAccessToken(), mailSecureItem.rCommandItem, letter.ToString(mailSecureItem), "", "", "", true, false);
                        }
                        catch (Exception ex)
                        {
                            SiteUtils.SendMessage(SiteData.VK.GetAccessToken(), mailSecureItem.rCommandItem, "Было получено новое сообщение, но его загрузка завершилась неудачей!");
                            ex.Error();
                        }
                    };

                    AutoResetEvents[hash].WaitOne();
                }
                catch (Exception e)
                {
                    e.Error();
                }
            }
        }
示例#16
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();
     }
 }
示例#17
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();
     }
 }
示例#18
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();
            }
        }
示例#19
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();
            }
        }
示例#20
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);
            }
        }