public static ValidationResult <InlineQueryResultVideo> CreateValidation(this InlineQueryResultVideo value) =>
 new ValidationResult <InlineQueryResultVideo>(value).ValidateRequired(x => x.Type)
 .ValidateRequired(x => x.Id)
 .ValidateRequired(x => x.VideoUrl)
 .ValidateRequired(x => x.MimeType)
 .ValidateRequired(x => x.Title)
 .ValidateRequired(x => x.ThumbUrl);
Exemple #2
0
        private static async void Api_InlineQueryReceived(object s, InlineQueryEventArgs e)
        {
            const int MaxResults = 20;

            try
            {
                long MsgId   = Interlocked.Increment(ref Identifier) * MaxResults;
                var  Results = new List <InlineQueryResult>();
                InlineQueryResultVideo Result;

                int i = 0;

                if (e.InlineQuery.Query == "remove")
                {
                    while (i < MaxResults)
                    {
                        Result                     = Result = new InlineQueryResultVideo();
                        Result.Id                  = (MsgId + i++).ToString();
                        Result.Title               = "Remove Song";
                        Result.Description         = $"#{i}";
                        Result.ThumbUrl            = "https://github.com/google/material-design-icons/blob/master/av/2x_web/ic_note_black_48dp.png?raw=true";
                        Result.MimeType            = "text/html";
                        Result.Url                 = Result.ThumbUrl;
                        Result.InputMessageContent = new InputTextMessageContent();
                        ((InputTextMessageContent)Result.InputMessageContent).MessageText = $"/remove@{Me.Username} [{MsgId}] {i}";
                        Result.ReplyMarkup = IKM("Loading..", "http://www.google.nl", "/");

                        Results.Add(Result);
                    }
                }
                else
                {
                    foreach (var Key in new string[] { "song", "queue", "skip" })
                    {
                        if (Key.StartsWith(e.InlineQuery.Query))
                        {
                            Result                     = Result = new InlineQueryResultVideo();
                            Result.Id                  = (MsgId + i++).ToString();
                            Result.Title               = "Use command";
                            Result.Description         = Key;
                            Result.ThumbUrl            = "https://github.com/google/material-design-icons/blob/master/av/2x_web/ic_note_black_48dp.png?raw=true";
                            Result.MimeType            = "text/html";
                            Result.Url                 = Result.ThumbUrl;
                            Result.InputMessageContent = new InputTextMessageContent();
                            ((InputTextMessageContent)Result.InputMessageContent).MessageText = $"/{Key}@{Me.Username} [{MsgId}]";
                            Result.ReplyMarkup = IKM("Loading..", "http://www.google.com", "/");

                            Results.Add(Result);
                        }
                    }

                    var Files = Directory.GetFiles(SongData.MusicDir).Where(x => x.EndsWith(".mp3") && x.ToLower().Contains(e.InlineQuery.Query)).ToArray();

                    var ListRequest = Search.YT.Search.List("snippet");
                    ListRequest.MaxResults = MaxResults - i;

                    if (Files.Length < ListRequest.MaxResults)
                    {
                        ListRequest.MaxResults -= Files.Length;

                        foreach (var File in Files)
                        {
                            Result                     = new InlineQueryResultVideo();
                            Result.Id                  = (MsgId + i++).ToString();
                            Result.Title               = File.Substring(SongData.MusicDir.Length);
                            Result.Title               = Result.Title.Substring(0, Result.Title.Length - 4);
                            Result.Caption             = Result.Title;
                            Result.Description         = "Local Mp3 File";
                            Result.ThumbUrl            = "https://github.com/google/material-design-icons/blob/master/av/2x_web/ic_play_arrow_black_48dp.png?raw=true";
                            Result.MimeType            = "video/mp4";
                            Result.Url                 = Result.ThumbUrl;
                            Result.InputMessageContent = new InputTextMessageContent();
                            ((InputTextMessageContent)Result.InputMessageContent).MessageText = $"/add@{Me.Username} [{MsgId}] {Result.Title}";
                            Result.ReplyMarkup = IKM("Loading..", Result.ThumbUrl, "/");
                            Results.Add(Result);
                        }
                    }

                    if (e.InlineQuery.Query.IsValidUrl() && ListRequest.MaxResults != 0)
                    {
                        ListRequest.MaxResults--;

                        Result                     = new InlineQueryResultVideo();
                        Result.Id                  = (MsgId + i++).ToString();
                        Result.Title               = e.InlineQuery.Query;
                        Result.Caption             = Result.Title;
                        Result.Description         = "Remote File";
                        Result.ThumbUrl            = "https://github.com/google/material-design-icons/blob/master/av/2x_web/ic_play_arrow_black_48dp.png?raw=true";
                        Result.MimeType            = "video/mp4";
                        Result.Url                 = Result.ThumbUrl;
                        Result.InputMessageContent = new InputTextMessageContent();
                        ((InputTextMessageContent)Result.InputMessageContent).MessageText = $"/add@{Me.Username} [{MsgId}] {e.InlineQuery.Query}";
                        Result.ReplyMarkup = IKM("Loading..", Result.ThumbUrl, "/");
                        Results.Add(Result);
                    }

                    if (ListRequest.MaxResults != 0)
                    {
                        ListRequest.Q    = e.InlineQuery.Query;
                        ListRequest.Type = "video";

                        foreach (var Video in (await ListRequest.ExecuteAsync()).Items)
                        {
                            Result                     = new InlineQueryResultVideo();
                            Result.Id                  = (MsgId + i++).ToString();
                            Result.Title               = Video.Snippet.Title;
                            Result.Caption             = Result.Title;
                            Result.Description         = Video.Snippet.Description;
                            Result.ThumbUrl            = Video.Snippet.Thumbnails.Maxres?.Url ?? Video.Snippet.Thumbnails.Default__?.Url ?? string.Empty;
                            Result.MimeType            = "text/html";
                            Result.Url                 = $"https://youtu.be/{Video.Id.VideoId}";
                            Result.InputMessageContent = new InputTextMessageContent();
                            ((InputTextMessageContent)Result.InputMessageContent).MessageText = $"/add@{Me.Username} [{MsgId}] {Result.Url}";
                            Result.ReplyMarkup = IKM("Open Song", Result.Url, "/");
                            Results.Add(Result);
                        }
                    }
                }

                await Api.AnswerInlineQuery(e.InlineQuery.Id, Results.ToArray(), 0);
            }
            catch (Exception Ex)
            {
                Ex.Log();
            }
        }
Exemple #3
0
        private async void OnInlineQuery(object sender, InlineQueryEventArgs e)
        {
            try
            {
                long MsgId = Interlocked.Increment(ref Identifier) * MusicHandler.MaxQueued;

                var Results = new List <InlineQueryResult>();
                InlineQueryResultVideo Result;

                int i = 0;

                if (e.InlineQuery.Query == "remove")
                {
                    while (i < MusicHandler.MaxQueued)
                    {
                        Result                     = Result = new InlineQueryResultVideo();
                        Result.Id                  = (MsgId + i++).ToString();
                        Result.Title               = "Remove Song";
                        Result.Description         = $"#{i}";
                        Result.ThumbUrl            = "https://github.com/google/material-design-icons/blob/master/av/2x_web/ic_note_black_48dp.png?raw=true";
                        Result.MimeType            = "text/html";
                        Result.Url                 = Result.ThumbUrl;
                        Result.InputMessageContent = new InputTextMessageContent();
                        ((InputTextMessageContent)Result.InputMessageContent).MessageText = $"/remove{Mention} [{MsgId}] {i}";
                        Result.ReplyMarkup = IKM("Loading..", "", "/");

                        Results.Add(Result);
                    }
                }
                else
                {
                    foreach (var Key in new string[] { "skip", "repeat" })
                    {
                        if (Key.StartsWith(e.InlineQuery.Query))
                        {
                            Result                     = Result = new InlineQueryResultVideo();
                            Result.Id                  = (MsgId + i++).ToString();
                            Result.Title               = "Use command";
                            Result.Description         = Key;
                            Result.ThumbUrl            = "https://github.com/google/material-design-icons/blob/master/av/2x_web/ic_note_black_48dp.png?raw=true";
                            Result.MimeType            = "text/html";
                            Result.Url                 = Result.ThumbUrl;
                            Result.InputMessageContent = new InputTextMessageContent();
                            ((InputTextMessageContent)Result.InputMessageContent).MessageText = $"/{Key}{Mention} [{MsgId}]";
                            Result.ReplyMarkup = IKM("Loading..", "", "/");

                            Results.Add(Result);
                        }
                    }

                    var Loading = new InlineKeyboardMarkup();
                    Loading.InlineKeyboard                    = new InlineKeyboardButton[][] { new[] { new InlineKeyboardButton() } };
                    Loading.InlineKeyboard[0][0].Text         = "Loading..";
                    Loading.InlineKeyboard[0][0].CallbackData = "/";

                    var Files = SongData.Search(e.InlineQuery.Query, 25);

                    foreach (var SearchResult in Files)
                    {
                        Results.Add(new InlineQueryResultVideo
                        {
                            Id       = (MsgId + i++).ToString(),
                            Url      = "http://music.botnets.me",
                            MimeType = "text/html",

                            ThumbUrl            = (SearchResult.Thumbnail != null && SearchResult.Thumbnail != string.Empty) ? SearchResult.Thumbnail : "https://github.com/google/material-design-icons/blob/master/av/2x_web/ic_note_black_48dp.png?raw=true",
                            Title               = SearchResult.FullName,
                            InputMessageContent = new InputTextMessageContent
                            {
                                MessageText = $"/add{Mention} [{MsgId}] {(SearchResult.Type == SongType.Local ? SearchResult.FullName : SearchResult.Url)}"
                            },
                            ReplyMarkup = Loading
                        });
                    }
                }

                await Client.AnswerInlineQueryAsync(e.InlineQuery.Id, Results.ToArray(), 0);
            }
            catch (Exception Ex)
            {
                Bot.Log(Ex);
            }
        }