Exemplo n.º 1
0
        //[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);
            }
        }
Exemplo n.º 2
0
        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));
                    }
                }
            }
        }