Пример #1
0
        public void ProcessNsfwMessage(SocketMessage m)
        {
            if (m.Author.IsBot)
            {
                return;
            }
            if ((m.Attachments.Count > 0) && m.Attachments.First().Filename.StartsWith("SPOILER_"))
            {
                return;
            }

            var    CurrentChannel = m.Channel;
            string NewContent     = m.Content.Replace("!nsfw", "").Replace("!ns", "");

            string builder = "Nguyên văn từ " +
                             "<@" +
                             m.Author.Id +
                             "> : " +
                             NewContent;

            // Compose message
            Attachment MsgAttachment = m.Attachments.First();

            if (m.Attachments.Count > 0 && MsgAttachment != null)
            {
                var ImgStream = URLUtils.GetStreamFromUrl(MsgAttachment.Url);

                CurrentChannel.SendFileAsync(ImgStream, "SPOILER_" + MsgAttachment.Filename, text: builder, false, null, null, true).ConfigureAwait(false);
                m.DeleteAsync();
            }
        }
Пример #2
0
        public void ProcessNsfwImageLink(String link, SocketMessage m)
        {
            if (m.Content.StartsWith("||"))
            {
                return;
            }
            try
            {
                if (URLUtils.IsImageUrl(link) && IsNsfwImage(link))
                {
                    string builder = "||Nguyên văn từ " +
                                     "<@" +
                                     m.Author.Id +
                                     "> : " +
                                     m.Content + "||";

                    var CurrentChannel = m.Channel;
                    CurrentChannel.SendMessageAsync(builder).ConfigureAwait(false);
                    m.DeleteAsync().ConfigureAwait(false);
                }
            }
            catch (WebException)
            {
                // Code...
            }
        }
Пример #3
0
        public void ProcessAttachment(SocketMessage m)
        {
            bool IsGeneralChannel = (m.Channel.Id == _creds.GeneralChannelId);

            if (!IsGeneralChannel)
            {
                return;
            }

            if (m.Attachments.Count < 1)
            {
                return;
            }
            if (m.Author.IsBot)
            {
                return;
            }

            foreach (Attachment attachment in m.Attachments)
            {
                if (!URLUtils.IsImageUrl(attachment.Url))
                {
                    return;
                }
                if (attachment.Filename.StartsWith("SPOILER_"))
                {
                    return;
                }

                if (IsNsfwImage(attachment.Url))
                {
                    ProcessNsfwMessage(m);
                }
            }
        }
Пример #4
0
        public void CheckUpdates()
        {
            if (!EnvironmentManager.Settings.CheckForUpdates)
            {
                return;
            }
            BackgroundWorker updateWorker = new BackgroundWorker();

            updateWorker.DoWork += async(s1, e2) => {
                RemoteVersion remote = RemoteVersion.Instance;
                if (remote != null)
                {
                    Version currentVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
                    if (remote.Version.CompareTo(currentVersion) > 0)
                    {
                        string content = string.Format(LanguageManager.Model.UpdateAvailableText, remote.Version)
                                         + System.Environment.NewLine
                                         + System.Environment.NewLine
                                         + remote.ChangeLog
                                         + System.Environment.NewLine
                                         + System.Environment.NewLine
                                         + LanguageManager.Model.UpdateDownloadQuestion;
                        string caption = string.Format(LanguageManager.Model.UpdateAvailableCaption, remote.Version);
                        if (await App.Kernel.Get <IDialogManager>().ShowYesNoDialog(caption, content).Wait())
                        {
                            URLUtils.OpenSite(remote.DownloadUrl);
                        }
                    }
                }
            };
            updateWorker.RunWorkerAsync();
        }
        /// <summary>
        /// Creates an <see cref="IInputSource"/> object for a given mediaitem.
        /// </summary>
        /// <param name="resourceLocator">Locator instance to the media item to create the input source for.</param>
        /// <param name="mimeType">Mime type of the media item, if present. May be <c>null</c>.</param>
        /// <returns>Input source object for the given <paramref name="resourceLocator"/> or <c>null</c>, if no input source
        /// could be created.</returns>
        public IInputSource CreateInputSource(IResourceLocator resourceLocator, string mimeType)
        {
            if (!CanPlay(resourceLocator, mimeType))
            {
                return(null);
            }
            IInputSource result;

            _accessor = resourceLocator.CreateAccessor();

            AudioCDResourceAccessor acdra = _accessor as AudioCDResourceAccessor;

            if (acdra != null)
            {
                result = BassCDTrackInputSource.Create(acdra.Drive, acdra.TrackNo);
            }
            else
            {
                string filePath = _accessor.ResourcePathName;
                // Network streams
                INetworkResourceAccessor netra = _accessor as INetworkResourceAccessor;
                if (netra != null)
                {
                    result = BassWebStreamInputSource.Create(netra.URL);
                }
                // CDDA
                else if (URLUtils.IsCDDA(filePath))
                {
                    ILocalFsResourceAccessor lfra = _accessor as ILocalFsResourceAccessor;
                    if (lfra == null)
                    {
                        return(null);
                    }
                    using (lfra.EnsureLocalFileSystemAccess())
                        result = BassFsCDTrackInputSource.Create(lfra.LocalFileSystemPath);
                }
                else
                {
                    // Filesystem resources
                    IFileSystemResourceAccessor fsra = _accessor as IFileSystemResourceAccessor;
                    if (fsra == null)
                    {
                        return(null);
                    }
                    if (URLUtils.IsMODFile(filePath))
                    {
                        result = BassMODFileInputSource.Create(fsra);
                    }
                    else
                    {
                        result = BassAudioFileInputSource.Create(fsra);
                    }
                }
            }
            Log.Debug("InputSourceFactory: Creating input source for media resource '{0}' of type '{1}'", _accessor, result.GetType());
            return(result);
        }
Пример #6
0
        /// <summary>
        /// Creates an <see cref="IInputSource"/> object for a given mediaitem.
        /// </summary>
        /// <param name="resourceLocator">Locator instance to the media item to create the input source for.</param>
        /// <param name="mimeType">Mime type of the media item, if present. May be <c>null</c>.</param>
        /// <returns>Input source object for the given <paramref name="resourceLocator"/> or <c>null</c>, if no input source
        /// could be created.</returns>
        public IInputSource CreateInputSource(IResourceLocator resourceLocator, string mimeType)
        {
            if (!CanPlay(resourceLocator, mimeType))
            {
                return(null);
            }
            IInputSource result;

            using (IResourceAccessor accessor = resourceLocator.CreateAccessor())
            {
                AudioCDResourceAccessor acdra = accessor as AudioCDResourceAccessor;
                if (acdra != null)
                {
                    result = BassCDTrackInputSource.Create(acdra.Drive, acdra.TrackNo);
                }
                else
                {
                    string filePath = accessor.ResourcePathName;
                    if (URLUtils.IsCDDA(filePath))
                    {
                        ILocalFsResourceAccessor lfra = accessor as ILocalFsResourceAccessor;
                        if (lfra == null)
                        {
                            return(null);
                        }
                        result = BassFsCDTrackInputSource.Create(lfra.LocalFileSystemPath);
                    }
                    else
                    {
                        IFileSystemResourceAccessor fsra = accessor as ILocalFsResourceAccessor;
                        if (fsra == null)
                        {
                            return(null);
                        }
                        if (URLUtils.IsMODFile(filePath))
                        {
                            result = BassMODFileInputSource.Create(fsra);
                        }
                        else
                        {
                            result = BassAudioFileInputSource.Create(fsra);
                        }
                    }
                    // TODO: Handle web streams when we have resource accessors for web URLs: BassWebStreamInputSource.Create(...);
                }
                Log.Debug("InputSourceFactory: Creating input source for media resource '{0}' of type '{1}'", accessor, result.GetType());
            }

            return(result);
        }
Пример #7
0
        public void HandlePotentialNsfwMessage(SocketMessage msg)
        {
            string ExtractedUrl = URLUtils.ExtractUrl(msg.Content);

            if (URLUtils.IsImageUrl(msg.Content) && msg.Attachments.Count == 0)
            {
                return;
            }

            if (msg.Content.StartsWith("!nsfw") || msg.Content.StartsWith("!ns"))
            {
                ProcessNsfwMessage(msg);
                return;
            }

            if (URLUtils.IsImageUrl(ExtractedUrl))
            {
                ProcessNsfwImageLink(ExtractedUrl, msg);
                return;
            }

            ProcessAttachment(msg);
        }
Пример #8
0
        public void Search(object obj)
        {
            if (obj == null)
            {
                return;
            }
            string url = null;

            if (typeof(WikiProvider.Suggestion).IsAssignableFrom(obj.GetType()))
            {
                url = Provider.URL + (obj as WikiProvider.Suggestion).Value;
            }
            if (typeof(string).IsAssignableFrom(obj.GetType()))
            {
                if (!string.IsNullOrEmpty((string)obj))
                {
                    url = string.Format(Provider.Search, obj);
                }
            }
            if (url != null)
            {
                URLUtils.OpenSite(url);
            }
        }
Пример #9
0
 private void OnRequestNavigate(object sender, RequestNavigateEventArgs e)
 {
     URLUtils.OpenSiteNoDecode(e.Uri.ToString());
 }
Пример #10
0
 private void OnRequestNavigate(object sender, RequestNavigateEventArgs e)
 {
     URLUtils.OpenSite(e.Uri.AbsoluteUri);
 }