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);
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(); } }
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); } }