public ReplacementBuilder WithRngRegex()
        {
            var rng = new NadekoRandom();

            _regex.TryAdd(rngRegex, (match) =>
            {
                int from = 0;
                int.TryParse(match.Groups["from"].ToString(), out from);

                int to = 0;
                int.TryParse(match.Groups["to"].ToString(), out to);

                if (from == 0 && to == 0)
                {
                    return(rng.Next(0, 11).ToString());
                }

                if (from >= to)
                {
                    return(string.Empty);
                }

                return(rng.Next(from, to + 1).ToString());
            });
            return(this);
        }
Beispiel #2
0
        public static async Task <string> GetSafeYandereImageLink(string tag)
        {
            var rng = new NadekoRandom();
            var url =
                $"https://yande.re/post.xml?" +
                $"limit=25" +
                $"&page={rng.Next(0, 15)}" +
                $"&tags={tag.Replace(" ", "_")}";

            using (var http = new HttpClient())
            {
                var webpage = await http.GetStringAsync(url).ConfigureAwait(false);

                var matches = Regex.Matches(webpage, "file_url=\"(?<url>.*?)\"");
                var rating  = Regex.Matches(webpage, "rating=\"(?<rate>.*?)\"");
                if (matches.Count == 0)
                {
                    return(null);
                }
                if (string.Equals(rating[rng.Next(0, rating.Count)].Groups["rate"].Value.ToString(), "s") || string.Equals(rating[rng.Next(0, rating.Count)].Groups["rate"].Value.ToString(), "q"))
                {
                    return(matches[rng.Next(0, matches.Count)].Groups["url"].Value);
                }
                else
                {
                    return(null);
                }
            }
        }
Beispiel #3
0
            public async Task Flip(int count = 1)
            {
                if (count == 1)
                {
                    if (rng.Next(0, 2) == 1)
                    {
                        using var heads = _images.Heads.ToStream();
                        await Context.Channel.SendFileAsync(heads, "heads.jpg", $"{Context.User.Mention} {GetText("flipped", Format.Bold(GetText("heads")))}").ConfigureAwait(false);
                    }
                    else
                    {
                        using var tails = _images.Tails.ToStream();
                        await Context.Channel.SendFileAsync(tails, "tails.jpg", $"{Context.User.Mention} {GetText("flipped", Format.Bold(GetText("tails")))}").ConfigureAwait(false);
                    }
                    return;
                }
                if (count > 10 || count < 1)
                {
                    await ReplyErrorLocalized("flip_invalid", 10).ConfigureAwait(false);

                    return;
                }
                var imgs = new Image <Rgba32> [count];

                for (var i = 0; i < count; i++)
                {
                    using var heads = _images.Heads.ToStream();
                    using var tails = _images.Tails.ToStream();
                    imgs[i]         = rng.Next(0, 10) < 5 ? Image.Load <Rgba32>(heads) : Image.Load <Rgba32>(tails);
                }
                await Context.Channel.SendFileAsync(imgs.Merge().ToStream(), $"{count} coins.png").ConfigureAwait(false);
            }
Beispiel #4
0
        public static async Task <string> GetDanbooruImageLink(string tag)
        {
            var rng = new NadekoRandom();

            if (tag == "loli") //loli doesn't work for some reason atm
            {
                tag = "flat_chest";
            }

            var link = $"http://danbooru.donmai.us/posts?" +
                       $"page={rng.Next(0, 15)}";

            if (!string.IsNullOrWhiteSpace(tag))
            {
                link += $"&tags={tag.Replace(" ", "_")}";
            }
            using (var http = new HttpClient())
            {
                var webpage = await http.GetStringAsync(link).ConfigureAwait(false);

                var matches = Regex.Matches(webpage, "data-large-file-url=\"(?<id>.*?)\"");

                if (matches.Count == 0)
                {
                    return(null);
                }
                return($"http://danbooru.donmai.us" +
                       $"{matches[rng.Next(0, matches.Count)].Groups["id"].Value}");
            }
        }
Beispiel #5
0
        public static HangmanObject GetTerm(string type)
        {
            if (string.IsNullOrWhiteSpace(type))
            {
                throw new ArgumentNullException(nameof(type));
            }

            type = type.Trim();

            var rng = new NadekoRandom();

            if (type == "All")
            {
                var keys = data.Keys.ToArray();
                type = keys[rng.Next(0, keys.Length)];
            }

            HangmanObject[] termTypes;
            data.TryGetValue(type, out termTypes);

            if (termTypes == null || termTypes.Length == 0)
            {
                return(null);
            }

            return(termTypes[rng.Next(0, termTypes.Length)]);
        }
Beispiel #6
0
        public TriviaQuestion GetRandomQuestion(HashSet <TriviaQuestion> exclude, bool isPokemon)
        {
            if (Pool.Length == 0)
            {
                return(null);
            }

            if (isPokemon)
            {
                var num = _rng.Next(1, maxPokemonId + 1);
                return(new TriviaQuestion("Who's That Pokémon?",
                                          Map[num].ToTitleCase(),
                                          "Pokemon",
                                          $@"https://nadeko.bot/images/pokemon/shadows/{num}.png",
                                          $@"https://nadeko.bot/images/pokemon/real/{num}.png"));
            }
            TriviaQuestion randomQuestion;

            while (exclude.Contains(randomQuestion = Pool[_rng.Next(0, Pool.Length)]))
            {
                ;
            }

            return(randomQuestion);
        }
        //ZGD: Commented original function parameters
        //public TriviaQuestion GetRandomQuestion(HashSet<TriviaQuestion> exclude, bool isPokemon)
        public TriviaQuestion GetRandomQuestion(HashSet <TriviaQuestion> exclude, bool isPokemon, bool isFriends, bool isFriendsHard)
        {
            if (Pool.Length == 0)
            {
                return(null);
            }

            if (isPokemon)
            {
                var num = _rng.Next(1, maxPokemonId + 1);
                return(new TriviaQuestion("Who's That Pokémon?",
                                          Map[num].ToTitleCase(),
                                          "Pokemon",
                                          $@"http://nadekobot.me/images/pokemon/shadows/{num}.png",
                                          $@"http://nadekobot.me/images/pokemon/real/{num}.png"));
            }

            //ZGD: Trivia Question trivia-friends block of code.
            if (isFriends || isFriendsHard)
            {
                var num = _rng.Next(0, maxFriendId);

                currentFriend = Map2[num];

                string friendName     = currentFriend.Name;
                string friendTriviaid = currentFriend.Triviaid;

                string friendUnderscore = friendName.Replace(" ", "_");
                friendUnderscore = friendUnderscore.Replace("'", "_");

                if (isFriendsHard)
                {
                    return(new TriviaQuestion("Who's That Friend?!",
                                              friendName.ToTitleCase(),
                                              "Friends Hard",
                                              $@"http://178.128.31.42/friends/SR/{friendTriviaid}.png",
                                              $@"http://178.128.31.42/friends/RR/{friendTriviaid}.png"));
                }
                else
                {
                    return(new TriviaQuestion("Name That Friend!",
                                              friendName.ToTitleCase(),
                                              "Friends",
                                              $@"http://178.128.31.42/friends/RR/{friendTriviaid}.png",
                                              $@""));
                }
            }
            //ZGD: end of trivia-friends question

            TriviaQuestion randomQuestion;

            while (exclude.Contains(randomQuestion = Pool[_rng.Next(0, Pool.Length)]))
            {
                ;
            }

            return(randomQuestion);
        }
Beispiel #8
0
            public async Task Place(IUserMessage imsg, PlaceType placeType, uint width = 0, uint height = 0)
            {
                var channel = (ITextChannel)imsg.Channel;

                string url = "";

                switch (placeType)
                {
                case PlaceType.Cage:
                    url = "http://www.placecage.com";
                    break;

                case PlaceType.Steven:
                    url = "http://www.stevensegallery.com";
                    break;

                case PlaceType.Beard:
                    url = "http://placebeard.it";
                    break;

                case PlaceType.Fill:
                    url = "http://www.fillmurray.com";
                    break;

                case PlaceType.Bear:
                    url = "https://www.placebear.com";
                    break;

                case PlaceType.Kitten:
                    url = "http://placekitten.com";
                    break;

                case PlaceType.Bacon:
                    url = "http://baconmockup.com";
                    break;

                case PlaceType.Xoart:
                    url = "http://xoart.link";
                    break;
                }
                var rng = new NadekoRandom();

                if (width <= 0 || width > 1000)
                {
                    width = (uint)rng.Next(250, 850);
                }

                if (height <= 0 || height > 1000)
                {
                    height = (uint)rng.Next(250, 850);
                }

                url += $"/{width}/{height}";

                await channel.SendMessageAsync(url).ConfigureAwait(false);
            }
        public static HangmanObject GetTerm(TermType type)
        {
            var rng = new NadekoRandom();

            if (type == TermType.Random)
            {
                type = _termTypes[rng.Next(0, _termTypes.Length - 1)];
            }

            return(Data.TryGetValue(type.ToString(), out var termTypes) && termTypes.Length != 0
                                ? termTypes[rng.Next(0, termTypes.Length)]
                                : throw new TermNotFoundException(type));
        }
Beispiel #10
0
        private void InitializeStartingLetters()
        {
            var wordCount = _rng.Next(3, 6);

            var lettersArr = new char[wordCount];

            for (int i = 0; i < wordCount; i++)
            {
                var randChar = (char)_rng.Next(65, 91);
                lettersArr[i] = randChar == 'X' ? (char)_rng.Next(65, 88) : randChar;
            }
            StartingLetters = lettersArr.ToImmutableArray();
        }
Beispiel #11
0
            private static KeyValuePair <string, ImmutableArray <byte> > GetRandomCurrencyImage()
            {
                var rng    = new NadekoRandom();
                var images = NadekoBot.Images.Currency;

                return(images[rng.Next(0, images.Length)]);
            }
Beispiel #12
0
 public static async Task <string> GetImgurImage(string query)
 {
     if (string.IsNullOrWhiteSpace(query))
     {
         return("Enter a query!");
     }
     try
     {
         using (var http = new HttpClient())
         {
             http.DefaultRequestHeaders.Clear();
             http.DefaultRequestHeaders.Add("Authorization", $"Client-ID {NadekoBot.Credentials.ImgurApiKey}");
             var rng       = new NadekoRandom();
             var reqString = $"https://api.imgur.com/3/gallery/search/top/1?q_any={Uri.EscapeUriString(query)}";
             var obj       = JObject.Parse(await http.GetStringAsync(reqString).ConfigureAwait(false));
             var items     = obj["data"] as JArray;
             if (obj["success"].ToString().Equals("false"))
             {
                 return("API call to Imgur was unsuccessful ;(");
             }
             else
             {
                 return(items[rng.Next(1, items.Count)]["link"].ToString());
             }
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.ToString());
         return("");
     }
 }
Beispiel #13
0
            public async Task Roll(IUserMessage umsg, int num)
            {
                var channel = (ITextChannel)umsg.Channel;

                if (channel == null)
                {
                    return;
                }

                var ordered = true;

                if (num < 1 || num > 30)
                {
                    await channel.SendMessageAsync("Invalid number specified. You can roll up to 1-30 dice at a time.").ConfigureAwait(false);

                    return;
                }

                var rng = new NadekoRandom();

                var dice   = new List <Image>(num);
                var values = new List <int>(num);

                for (var i = 0; i < num; i++)
                {
                    var randomNumber = rng.Next(1, 7);
                    var toInsert     = dice.Count;
                    if (ordered)
                    {
                        if (randomNumber == 6 || dice.Count == 0)
                        {
                            toInsert = 0;
                        }
                        else if (randomNumber != 1)
                        {
                            for (var j = 0; j < dice.Count; j++)
                            {
                                if (values[j] < randomNumber)
                                {
                                    toInsert = j;
                                    break;
                                }
                            }
                        }
                    }
                    else
                    {
                        toInsert = dice.Count;
                    }
                    dice.Insert(toInsert, GetDice(randomNumber));
                    values.Insert(toInsert, randomNumber);
                }

                var bitmap = dice.Merge();
                var ms     = new MemoryStream();

                bitmap.SaveAsPng(ms);
                ms.Position = 0;
                await channel.SendFileAsync(ms, "dice.png", $"{umsg.Author.Mention} rolled {values.Count} {(values.Count == 1 ? "die" : "dice")}. Total: **{values.Sum()}** Average: **{(values.Sum() / (1.0f * values.Count)).ToString("N2")}**").ConfigureAwait(false);
            }
Beispiel #14
0
        public async Task Ir(IUserMessage umsg, [Remainder] string query = null)
        {
            var channel = (ITextChannel)umsg.Channel;

            if (string.IsNullOrWhiteSpace(query))
            {
                return;
            }

            var           rng      = new NadekoRandom();
            Task <string> provider = Task.FromResult("");

            switch (rng.Next(0, 0))
            {
            case 0:
                provider = GetGoogleImage(query);
                break;

            default:
                break;
            }
            var link = await provider.ConfigureAwait(false);

            if (string.IsNullOrWhiteSpace(link))
            {
                await channel.SendMessageAsync("Search yielded no results ;(").ConfigureAwait(false);
            }
            else
            {
                await channel.SendMessageAsync(link).ConfigureAwait(false);
            }
        }
Beispiel #15
0
        public static async Task <string> GetATFbooruImageLink(string tag)
        {
            var rng = new NadekoRandom();

            var link = $"https://atfbooru.ninja/posts?" +
                       $"limit=100";

            if (!string.IsNullOrWhiteSpace(tag))
            {
                link += $"&tags={tag.Replace(" ", "+")}";
            }
            using (var http = new HttpClient())
            {
                var webpage = await http.GetStringAsync(link).ConfigureAwait(false);

                var matches = Regex.Matches(webpage, "data-file-url=\"(?<id>.*?)\"");

                if (matches.Count == 0)
                {
                    return(null);
                }
                return($"https://atfbooru.ninja" +
                       $"{matches[rng.Next(0, matches.Count)].Groups["id"].Value}");
            }
        }
Beispiel #16
0
            private async Task InternalRoll(int num, bool ordered)
            {
                if (num < 1 || num > 30)
                {
                    await ReplyErrorLocalized("dice_invalid_number", 1, 30).ConfigureAwait(false);

                    return;
                }

                var rng = new NadekoRandom();

                var dice   = new List <Image <Rgba32> >(num);
                var values = new List <int>(num);

                for (var i = 0; i < num; i++)
                {
                    var randomNumber = rng.Next(1, 7);
                    var toInsert     = dice.Count;
                    if (ordered)
                    {
                        if (randomNumber == 6 || dice.Count == 0)
                        {
                            toInsert = 0;
                        }
                        else if (randomNumber != 1)
                        {
                            for (var j = 0; j < dice.Count; j++)
                            {
                                if (values[j] < randomNumber)
                                {
                                    toInsert = j;
                                    break;
                                }
                            }
                        }
                    }
                    else
                    {
                        toInsert = dice.Count;
                    }
                    dice.Insert(toInsert, GetDice(randomNumber));
                    values.Insert(toInsert, randomNumber);
                }

                using (var bitmap = dice.Merge())
                    using (var ms = bitmap.ToStream())
                    {
                        foreach (var d in dice)
                        {
                            d.Dispose();
                        }

                        await Context.Channel.SendFileAsync(ms, "dice.png",
                                                            Context.User.Mention + " " +
                                                            GetText("dice_rolled_num", Format.Bold(values.Count.ToString())) +
                                                            " " + GetText("total_average",
                                                                          Format.Bold(values.Sum().ToString()),
                                                                          Format.Bold((values.Sum() / (1.0f * values.Count)).ToString("N2")))).ConfigureAwait(false);
                    }
            }
Beispiel #17
0
        public async Task WhosPlaying([Leftover] string game)
        {
            game = game?.Trim().ToUpperInvariant();
            if (string.IsNullOrWhiteSpace(game))
            {
                return;
            }

            if (!(ctx.Guild is SocketGuild socketGuild))
            {
                _log.Warn("Can't cast guild to socket guild.");
                return;
            }
            var rng = new NadekoRandom();
            var arr = await Task.Run(() => socketGuild.Users
                                     .Where(u => u.Activity?.Name?.ToUpperInvariant() == game)
                                     .Select(u => u.Username)
                                     .OrderBy(x => rng.Next())
                                     .Take(60)
                                     .ToArray()).ConfigureAwait(false);

            int i = 0;

            if (arr.Length == 0)
            {
                await ReplyErrorLocalizedAsync("nobody_playing_game").ConfigureAwait(false);
            }
            else
            {
                await ctx.Channel.SendConfirmAsync("```css\n" + string.Join("\n", arr.GroupBy(item => (i++) / 2)
                                                                            .Select(ig => string.Concat(ig.Select(el => $"• {el,-27}")))) + "\n```")
                .ConfigureAwait(false);
            }
        }
        public async Task WhosPlaying([Remainder] string game)
        {
            //TODO: avoid upper case comparison.
            game = game?.Trim().ToUpperInvariant();
            if (string.IsNullOrWhiteSpace(game))
            {
                return;
            }

            //TODO: remove cast.
            if (!(Context.Guild is SocketGuild socketGuild))
            {
                _log.Warn("Can't cast guild to socket guild.");
                return;
            }
            var rng = new NadekoRandom();
            var arr = await Task.Run(() => socketGuild.Users
                                     .Where(u => u.Activities.FirstOrDefault()?.Name?.ToUpperInvariant() == game)
                                     .Select(u => u.Username)
                                     .OrderBy(x => rng.Next())
                                     .Take(60)
                                     .ToArray()).ConfigureAwait(false);

            var i = 0;

            if (arr.Length == 0)
            {
                await ReplyErrorLocalized("nobody_playing_game").ConfigureAwait(false);
            }
            else
            {
                await Context.Channel.SendConfirmAsync("```css\n" + string.Join("\n", arr.GroupBy(item => i++ / 2).Select(ig => string.Concat(ig.Select(el => $"• {el,-27}")))) + "\n```").ConfigureAwait(false);
            }
        }
Beispiel #19
0
        public byte[] GetRandomCurrencyImage()
        {
            var rng = new NadekoRandom();
            var cur = _images.Currency;

            return(cur[rng.Next(0, cur.Length)]);
        }
Beispiel #20
0
            public async Task Roll(IUserMessage umsg)
            {
                var channel = (ITextChannel)umsg.Channel;

                if (channel == null)
                {
                    return;
                }
                var rng = new NadekoRandom();
                var gen = rng.Next(1, 101);

                var num1        = gen / 10;
                var num2        = gen % 10;
                var imageStream = await Task.Run(() =>
                {
                    try
                    {
                        var ms = new MemoryStream();
                        new[] { GetDice(num1), GetDice(num2) }.Merge().SaveAsPng(ms);
                        ms.Position = 0;
                        return(ms);
                    }
                    catch { return(new MemoryStream()); }
                });

                await channel.SendFileAsync(imageStream, "dice.png", $"{umsg.Author.Mention} rolled " + Format.Code(gen.ToString())).ConfigureAwait(false);
            }
Beispiel #21
0
 public static async Task <string> GetRandomGalleryImageID(string page, string window)
 {
     try
     {
         using (var http = new HttpClient())
         {
             http.DefaultRequestHeaders.Clear();
             http.DefaultRequestHeaders.Add("Authorization", $"Client-ID {NadekoBot.Credentials.ImgurApiKey}");
             var rng       = new NadekoRandom();
             var reqString = $"	https://api.imgur.com/3/gallery/hot/viral/{Uri.EscapeUriString(window)}/{Uri.EscapeUriString(page)}?showViral=bool";
             var obj       = JObject.Parse(await http.GetStringAsync(reqString).ConfigureAwait(false));
             var items     = obj["data"] as JArray;
             var randomInt = rng.Next(1, items.Count);
             if (obj["success"].ToString().Equals("false"))
             {
                 return("API call to Imgur was unsuccessful ;(");
             }
             else
             {
                 return(items[randomInt]["link"].ToString());
             }
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.ToString());
         return("");
     }
 }
        /// <summary>
        /// Generate a hexadecimal string from 1000 to ffff.
        /// </summary>
        /// <returns>A hexadecimal string from 1000 to ffff</returns>
        private string GenerateCurrencyPassword()
        {
            // generate a number from 1000 to ffff
            var num = _rng.Next(4096, 65536);

            // convert it to hexadecimal
            return(num.ToString("X"));
        }
            /*public Uri Birb();
             * [NadekoCommand, Usage, Description, Aliases]
             * [RequireContext(ContextType.Guild)]
             * public Task Birdup()
             * {
             *
             * }*/


            ///public Uri GetRandomBlackmail()
            public byte[] GetRandomBlackmail()
            {
                var rng = new NadekoRandom();

                ///var blk = _images.ImageUrls.NoContext;
                ///return blk[rng.Next(0, blk.Length)];
                return(_images.NoContext[rng.Next(0, _images.NoContext.Count)]);
            }
Beispiel #24
0
 public Task<Quote> SearchQuoteKeywordTextAsync(ulong guildId, string keyword, string text)
 {
     var rngk = new NadekoRandom();
     return _set.Where(q => q.Text.ContainsNoCase(text, StringComparison.OrdinalIgnoreCase)
         && q.GuildId == guildId && q.Keyword == keyword)
         .OrderBy(q => rngk.Next())
         .FirstOrDefaultAsync();
 }
Beispiel #25
0
            public async Task MagicItem(IUserMessage umsg)
            {
                var channel = (ITextChannel)umsg.Channel;
                var rng     = new NadekoRandom();
                var item    = magicItems[rng.Next(0, magicItems.Count)].ToString();

                await channel.SendMessageAsync(item).ConfigureAwait(false);
            }
Beispiel #26
0
        private async Task Start()
        {
            CurrentPhase = Phase.Running;
            if (_users.Count <= 1)
            {
                foreach (var user in _users)
                {
                    if (user.Bet > 0)
                    {
                        await _currency.AddAsync(user.UserId, "Race refund", user.Bet).ConfigureAwait(false);
                    }
                }

                var _sf = OnStartingFailed?.Invoke(this);
                CurrentPhase = Phase.Ended;
                return;
            }

            var _  = OnStarted?.Invoke(this);
            var _t = Task.Run(async() =>
            {
                var rng = new NadekoRandom();
                while (!_users.All(x => x.Progress >= 60))
                {
                    foreach (var user in _users)
                    {
                        user.Progress += rng.Next(1, 11);
                        if (user.Progress >= 60)
                        {
                            user.Progress = 60;
                        }
                    }

                    var finished = _users.Where(x => x.Progress >= 60 && !FinishedUsers.Contains(x))
                                   .Shuffle();

                    FinishedUsers.AddRange(finished);

                    var _ignore = OnStateUpdate?.Invoke(this);
                    await Task.Delay(2500).ConfigureAwait(false);
                }

                var win_amount = 0;

                foreach (var u in FinishedUsers)
                {
                    win_amount += (int)u.Bet;
                }

                if (FinishedUsers[0].Bet > 0)
                {
                    await _currency.AddAsync(FinishedUsers[0].UserId, "Won a Race", win_amount)
                    .ConfigureAwait(false);
                }

                var _ended = OnEnded?.Invoke(this);
            });
        }
Beispiel #27
0
            public async Task Flip(int count = 1)
            {
                if (count == 1)
                {
                    var coins = _images.ImageUrls.Coins;
                    if (rng.Next(0, 2) == 1)
                    {
                        await Context.Channel.EmbedAsync(new EmbedBuilder()
                                                         .WithOkColor()
                                                         .WithImageUrl(coins.Heads[rng.Next(0, coins.Heads.Length)].ToString())
                                                         .WithDescription(Context.User.Mention + " " + GetText("flipped", Format.Bold(GetText("heads"))))).ConfigureAwait(false);
                    }
                    else
                    {
                        await Context.Channel.EmbedAsync(new EmbedBuilder()
                                                         .WithOkColor()
                                                         .WithImageUrl(coins.Tails[rng.Next(0, coins.Tails.Length)].ToString())
                                                         .WithDescription(Context.User.Mention + " " + GetText("flipped", Format.Bold(GetText("tails"))))).ConfigureAwait(false);
                    }
                    return;
                }
                if (count > 10 || count < 1)
                {
                    await ReplyErrorLocalized("flip_invalid", 10).ConfigureAwait(false);

                    return;
                }
                var imgs = new Image <Rgba32> [count];

                for (var i = 0; i < count; i++)
                {
                    using (var heads = _images.Heads[rng.Next(0, _images.Heads.Length)].ToStream())
                        using (var tails = _images.Tails[rng.Next(0, _images.Tails.Length)].ToStream())
                        {
                            if (rng.Next(0, 10) < 5)
                            {
                                imgs[i] = Image.Load(heads);
                            }
                            else
                            {
                                imgs[i] = Image.Load(tails);
                            }
                        }
                }
                using (var img = imgs.Merge())
                    using (var stream = img.ToStream())
                    {
                        await Context.Channel.SendFileAsync(stream, $"{count} coins.png").ConfigureAwait(false);
                    }
            }
Beispiel #28
0
        private void GenerateCode()
        {
            var rng = new NadekoRandom();

            for (var i = 0; i < 5; i++)
            {
                Code += _sneakyGameStatusChars[rng.Next(0, _sneakyGameStatusChars.Length)];
            }
        }
Beispiel #29
0
        private GirlRating GetGirl(ulong uid)
        {
            var rng = new NadekoRandom();

            var roll = rng.Next(1, 1001);

            var ratings = _service.Ratings.GetAwaiter().GetResult();

            double hot;
            double crazy;
            string advice;

            if (roll < 500)
            {
                hot    = NextDouble(0, 5);
                crazy  = NextDouble(4, 10);
                advice = ratings.Nog;
            }
            else if (roll < 750)
            {
                hot    = NextDouble(5, 8);
                crazy  = NextDouble(4, .6 * hot + 4);
                advice = ratings.Fun;
            }
            else if (roll < 900)
            {
                hot    = NextDouble(5, 10);
                crazy  = NextDouble(.61 * hot + 4, 10);
                advice = ratings.Dan;
            }
            else if (roll < 951)
            {
                hot    = NextDouble(8, 10);
                crazy  = NextDouble(7, .6 * hot + 4);
                advice = ratings.Dat;
            }
            else if (roll < 990)
            {
                hot    = NextDouble(8, 10);
                crazy  = NextDouble(5, 7);
                advice = ratings.Wif;
            }
            else if (roll < 999)
            {
                hot    = NextDouble(8, 10);
                crazy  = NextDouble(2, 3.99d);
                advice = ratings.Tra;
            }
            else
            {
                hot    = NextDouble(8, 10);
                crazy  = NextDouble(4, 5);
                advice = ratings.Uni;
            }

            return(new GirlRating(_images, _httpFactory, crazy, hot, roll, advice));
        }
Beispiel #30
0
        public static async Task <string> GetRule34ImageLink(string tag)
        {
            var rng = new NadekoRandom();
            var url =
                $"http://rule34.xxx/index.php?page=dapi&s=post&q=index&limit=100&tags={tag.Replace(" ", "_")}";

            using (var http = new HttpClient())
            {
                var webpage = await http.GetStringAsync(url).ConfigureAwait(false);

                var matches = Regex.Matches(webpage, "file_url=\"(?<url>.*?)\"");
                if (matches.Count == 0)
                {
                    return(null);
                }
                var match = matches[rng.Next(0, matches.Count)];
                return("http:" + matches[rng.Next(0, matches.Count)].Groups["url"].Value);
            }
        }