//[Command("Add", RunMode = RunMode.Async)] //[Summary("add only a song to play list ")] public async Task Add(string parameter) { try { if (parameter != null && _textChannel != null) { using (_textChannel.EnterTypingState()) { //Test for valid URL bool result = Uri.TryCreate(parameter, UriKind.Absolute, out Uri uriResult) && (uriResult.Scheme == "http" || uriResult.Scheme == "https"); //Answer if (result) { try { Tuple <string, string> info = await DownloadHelper.GetInfo(parameter); await SendMessage($"{Context.User.Mention} requested \"{info.Item1}\" ({info.Item2})! Downloading now..."); //Download string file = await DownloadHelper.Download(parameter); var vidInfo = new Tuple <string, string, string, string>(file, info.Item1, info.Item2, Context.User.Mention); _queue.Enqueue(vidInfo); Pause = false; } catch (Exception ex) { await SendMessage( $"Sorry {Context.User.Mention}, unfortunately I can't play that Song!"); } } else { await _textChannel.SendMessageAsync( $"Sorry {Context.User.Mention}, but that was not a valid URL!"); } } } } catch (Exception ex) { CommonTools.ErrorReporting(ex); } }
public async Task Promote(PickupQueue queue, ITextChannel pickupChannel, IGuildUser user) { var guild = (SocketGuild)user.Guild; var activity = await _activitiesRepository.Find(user); activity.PickupPromote += 1; await _activitiesRepository.Update(activity); if (queue?.MaxInQueue <= queue?.Subscribers.Count) { await pickupChannel.SendMessageAsync("Queue is full, why the spam?").AutoRemoveMessage(10); return; } var role = guild.Roles.FirstOrDefault(w => w.Name == RoleNames.PickupPromote); if (role == null) { return; //Failed to get role; } var users = guild.Users.Where(w => w.Roles.Any(r => r.Id == role.Id)).ToList(); if (!users.Any()) { await pickupChannel.SendMessageAsync("No users have subscribed using the `!subscribe` command.") .AutoRemoveMessage(10); return; } using (pickupChannel.EnterTypingState()) { if (queue == null) { var queues = await _queueRepository.AllQueues(user.GuildId.ToString()); var filtered = queues.Where(q => q.MaxInQueue > q.Subscribers.Count).ToArray(); if (filtered.Any()) { await pickupChannel.SendMessageAsync($"There are {filtered.Length} pickup queues with spots left, check out the `!list`! - {role.Mention}") .AutoRemoveMessage(); } } else { var sb = BuildPromoteMessage(queue, pickupChannel); var embed = new EmbedBuilder { Title = $"Pickup queue {queue.Name} needs more players", Description = sb.ToString(), Author = new EmbedAuthorBuilder { Name = "pickup-bot" }, Color = Color.Orange }.Build(); foreach (var u in users) { await u.SendMessageAsync(embed : embed); await Task.Delay(TimeSpan.FromMilliseconds(200)); } } } }