Exemple #1
0
        private async Task RunNsfwAsync <T>(IContext e)
            where T : BooruPost, ILinkable
        {
            try
            {
                ILinkable s = await ImageboardProviderPool.GetProvider <T>()
                              .GetPostAsync(e.GetArgumentPack().Pack.TakeAll(), ImageRating.EXPLICIT);

                if (!IsValid(s))
                {
                    throw new DataNotFoundException();
                }

                await CreateEmbed(s)
                .QueueAsync(e, e.GetChannel());
            }
            catch (ArgumentOutOfRangeException)
            {
                throw new DataNotFoundException();
            }
            catch (Exception ex)
            {
                if (!(ex is LocalizedException))
                {
                    await e.ErrorEmbed("Too many tags for this system. sorry :(")
                    .ToEmbed()
                    .QueueAsync(e, e.GetChannel());
                }
                throw;
            }

            await UnlockLewdAchievementAsync(e, e.GetService <AchievementService>());
        }
Exemple #2
0
        public async Task DoSafe(EventContext e)
        {
            Locale locale = Locale.GetEntity(e.Channel.Id.ToDbLong());

            ILinkable s = null;

            if (e.arguments.ToLower().StartsWith("use"))
            {
                string[] a = e.arguments.Split(' ');
                e.arguments = e.arguments.Substring(a[0].Length);
                switch (a[0].Split(':')[1].ToLower())
                {
                case "safebooru":
                {
                    s = ImageboardProviderPool.GetProvider <SafebooruPost>().GetPost(e.arguments, ImageboardRating.SAFE);
                }
                break;

                case "gelbooru":
                {
                    s = ImageboardProviderPool.GetProvider <GelbooruPost>().GetPost(e.arguments, ImageboardRating.SAFE);
                }
                break;

                case "konachan":
                {
                    s = ImageboardProviderPool.GetProvider <KonachanPost>().GetPost(e.arguments, ImageboardRating.SAFE);
                }
                break;

                case "e621":
                {
                    s = ImageboardProviderPool.GetProvider <E621Post>().GetPost(e.arguments, ImageboardRating.SAFE);
                }
                break;

                default:
                {
                    await e.Channel.SendMessage("I do not support this image host :(");
                }
                break;
                }
            }
            else
            {
                s = ImageboardProviderPool.GetProvider <SafebooruPost>().GetPost(e.arguments, ImageboardRating.SAFE);
            }

            if (s == null)
            {
                await Utils.ErrorEmbed(locale, "We couldn't find an image with these tags!").SendToChannel(e.Channel);

                return;
            }

            await e.Channel.SendMessage(s.Url);
        }
Exemple #3
0
        public async Task RunYandere(EventContext e)
        {
            ILinkable s = ImageboardProviderPool.GetProvider <YanderePost>().GetPost(e.arguments, ImageboardRating.EXPLICIT);

            if (!IsValid(s))
            {
                e.ErrorEmbed("Couldn't find anything with these tags!")
                .QueueToChannel(e.Channel);
                return;
            }

            CreateEmbed(s).QueueToChannel(e.Channel);
        }
Exemple #4
0
        public async Task RunYandere(EventContext e)
        {
            ILinkable s = ImageboardProviderPool.GetProvider <YanderePost>().GetPost(e.arguments, ImageboardRating.EXPLICIT);

            if (s == null)
            {
                await Utils.ErrorEmbed(Locale.GetEntity(e.Channel.Id), "Couldn't find anything with these tags!")
                .SendToChannel(e.Channel);
            }

            await Utils.Embed
            .SetTitle("YANDE.RE")
            .SetImageUrl(s.Url)
            .SendToChannel(e.Channel.Id);
        }
Exemple #5
0
        public async Task RunYandere(EventContext e)
        {
            ILinkable s = ImageboardProviderPool.GetProvider <YanderePost>().GetPost(e.arguments, ImageboardRating.EXPLICIT);

            if (!IsValid(s))
            {
                await Utils.ErrorEmbed(Locale.GetEntity(e.Channel.Id), "Couldn't find anything with these tags!")
                .SendToChannel(e.Channel);

                return;
            }

            await CreateEmbed(s)
            .SendToChannel(e.Channel);
        }
Exemple #6
0
 public FunModule(RuntimeModule m)
 {
     ImageboardProviderPool.AddProvider(new ImageboardProvider <E621Post>(new ImageboardConfigurations
     {
         QueryKey          = "http://e621.net/post/index.json?limit=1&tags=",
         ExplicitTag       = "rating:e",
         QuestionableTag   = "rating:q",
         SafeTag           = "rating:s",
         NetUseCredentials = true,
         NetHeaders        = new List <string>()
         {
             "User-Agent: Other"
         }
     }));
     ImageboardProviderPool.AddProvider(new ImageboardProvider <GelbooruPost>("http://gelbooru.com/index.php?page=dapi&s=post&q=index&json=1&tags="));
     ImageboardProviderPool.AddProvider(new ImageboardProvider <SafebooruPost>("https://safebooru.org/index.php?page=dapi&s=post&q=index&json=1&tags="));
     ImageboardProviderPool.AddProvider(new ImageboardProvider <Rule34Post>("http://rule34.xxx/index.php?page=dapi&s=post&q=index&json=1&tags="));
     ImageboardProviderPool.AddProvider(new ImageboardProvider <KonachanPost>("https://konachan.com/post.json?tags="));
     ImageboardProviderPool.AddProvider(new ImageboardProvider <YanderePost>("https://yande.re/post.json?tags="));
 }
Exemple #7
0
        public async Task RunYandere(EventContext e)
        {
            try
            {
                ILinkable s = await ImageboardProviderPool.GetProvider <YanderePost>().GetPostAsync(e.Arguments.ToString(), ImageboardRating.EXPLICIT);

                if (!IsValid(s))
                {
                    e.ErrorEmbed("Couldn't find anything with these tags!")
                    .ToEmbed().QueueToChannel(e.Channel);
                    return;
                }

                CreateEmbed(s).QueueToChannel(e.Channel);
            }
            catch (Exception ex)
            {
                e.ErrorEmbed("Too many tags for this system. sorry :(")
                .ToEmbed().QueueToChannel(e.Channel);
            }
        }
Exemple #8
0
        public async Task RunE621(EventContext e)
        {
            try
            {
                ILinkable s = await ImageboardProviderPool.GetProvider <E621Post>().GetPostAsync(e.Arguments.Pack.TakeAll(), ImageboardRating.EXPLICIT);

                if (!IsValid(s))
                {
                    await e.ErrorEmbed("Couldn't find anything with these tags!")
                    .ToEmbed().QueueToChannelAsync(e.Channel);

                    return;
                }

                await CreateEmbed(s)
                .QueueToChannelAsync(e.Channel);
            }
            catch
            {
                await e.ErrorEmbed("Too many tags for this system. sorry :(")
                .ToEmbed().QueueToChannelAsync(e.Channel);
            }
        }
Exemple #9
0
        public async Task DoSafe(EventContext e)
        {
            ILinkable s = null;

            ArgObject arg = e.Arguments.FirstOrDefault();

            if (arg != null)
            {
                string useArg = arg.Argument;

                if (useArg.ToLower().StartsWith("use"))
                {
                    arg = arg.Next();

                    switch (useArg.Split(':')[1].ToLower())
                    {
                    case "safebooru":
                    {
                        s = await ImageboardProviderPool.GetProvider <SafebooruPost>().GetPostAsync(arg?.TakeUntilEnd().Argument, ImageboardRating.SAFE);
                    }
                    break;

                    case "gelbooru":
                    {
                        s = await ImageboardProviderPool.GetProvider <GelbooruPost>().GetPostAsync(arg?.TakeUntilEnd().Argument, ImageboardRating.SAFE);
                    }
                    break;

                    case "konachan":
                    {
                        s = await ImageboardProviderPool.GetProvider <KonachanPost>().GetPostAsync(arg?.TakeUntilEnd().Argument, ImageboardRating.SAFE);
                    }
                    break;

                    case "e621":
                    {
                        s = await ImageboardProviderPool.GetProvider <E621Post>().GetPostAsync(arg?.TakeUntilEnd().Argument, ImageboardRating.SAFE);
                    }
                    break;

                    default:
                    {
                        e.Channel.QueueMessageAsync("I do not support this image host :(");
                    }
                    break;
                    }
                }
                else
                {
                    s = await ImageboardProviderPool.GetProvider <SafebooruPost>().GetPostAsync(e.Arguments.Join()?.Argument ?? "", ImageboardRating.SAFE);
                }
            }
            else
            {
                s = await ImageboardProviderPool.GetProvider <SafebooruPost>().GetPostAsync(e.Arguments.Join()?.Argument ?? "", ImageboardRating.SAFE);
            }

            if (s == null)
            {
                e.ErrorEmbed("We couldn't find an image with these tags!").ToEmbed().QueueToChannel(e.Channel);
                return;
            }

            e.Channel.QueueMessageAsync(s.Url);
        }
Exemple #10
0
        public FunModule(Module m, Bot b)
        {
            ImageboardProviderPool.AddProvider(new ImageboardProvider <E621Post>(new ImageboardConfigurations
            {
                QueryKey          = new Uri("http://e621.net/post/index.json?tags="),
                ExplicitTag       = "rating:e",
                QuestionableTag   = "rating:q",
                SafeTag           = "rating:s",
                NetUseCredentials = true,
                NetHeaders        = new List <Tuple <string, string> >()
                {
                    new Tuple <string, string>("User-Agent", "Other"),
                },
                BlacklistedTags =
                {
                    "loli",
                    "shota",
                }
            }));
            ImageboardProviderPool.AddProvider(new ImageboardProvider <DanbooruPost>(new ImageboardConfigurations
            {
                QueryKey          = new Uri("https://danbooru.donmai.us/posts.json?tags="),
                ExplicitTag       = "rating:e",
                QuestionableTag   = "rating:q",
                SafeTag           = "rating:s",
                NetUseCredentials = true,
                NetHeaders        =
                {
                    new Tuple <string, string>("Authorization", $"Basic {Convert.ToBase64String(Encoding.UTF8.GetBytes(Global.Config.DanbooruCredentials))}"),
                },
                BlacklistedTags =
                {
                    "loli",
                    "shota"
                }
            }));
            ImageboardProviderPool.AddProvider(new ImageboardProvider <GelbooruPost>(new ImageboardConfigurations
            {
                QueryKey        = new Uri("http://gelbooru.com/index.php?page=dapi&s=post&q=index&json=1&tags="),
                BlacklistedTags =
                {
                    "loli",
                    "shota",
                }
            }));
            ImageboardProviderPool.AddProvider(new ImageboardProvider <SafebooruPost>(new ImageboardConfigurations
            {
                QueryKey        = new Uri("https://safebooru.org/index.php?page=dapi&s=post&q=index&json=1&tags="),
                BlacklistedTags =
                {
                    "loli",
                    "shota",
                }
            }));
            ImageboardProviderPool.AddProvider(new ImageboardProvider <Rule34Post>(new ImageboardConfigurations
            {
                QueryKey        = new Uri("http://rule34.xxx/index.php?page=dapi&s=post&q=index&json=1&tags="),
                BlacklistedTags =
                {
                    "loli",
                    "shota",
                }
            }));
            ImageboardProviderPool.AddProvider(new ImageboardProvider <KonachanPost>(new ImageboardConfigurations
            {
                QueryKey        = new Uri("https://konachan.com/post.json?tags="),
                BlacklistedTags =
                {
                    "loli",
                    "shota",
                }
            }));

            ImageboardProviderPool.AddProvider(new ImageboardProvider <YanderePost>(new ImageboardConfigurations
            {
                QueryKey        = new Uri("https://yande.re/post.json?tags="),
                BlacklistedTags =
                {
                    "loli",
                    "shota",
                }
            }));
        }
Exemple #11
0
        public async Task DoSafe(ICommandContext e)
        {
            ILinkable s = null;

            if (e.Arguments.Take(out string useArg))
            {
                string tags = e.Arguments.Pack.TakeAll();
                if (useArg.ToLower().StartsWith("use"))
                {
                    switch (useArg.Split(':')[1].ToLower())
                    {
                    case "safebooru":
                    {
                        s = await ImageboardProviderPool.GetProvider <SafebooruPost>().GetPostAsync(tags, ImageRating.SAFE);
                    }
                    break;

                    case "gelbooru":
                    {
                        s = await ImageboardProviderPool.GetProvider <GelbooruPost>().GetPostAsync(tags, ImageRating.SAFE);
                    }
                    break;

                    case "konachan":
                    {
                        s = await ImageboardProviderPool.GetProvider <KonachanPost>().GetPostAsync(tags, ImageRating.SAFE);
                    }
                    break;

                    case "e621":
                    {
                        s = await ImageboardProviderPool.GetProvider <E621Post>().GetPostAsync(tags, ImageRating.SAFE);
                    }
                    break;

                    default:
                    {
                        e.Channel.QueueMessage("I do not support this image host :(");
                    }
                    break;
                    }
                }
                else
                {
                    s = await ImageboardProviderPool.GetProvider <SafebooruPost>().GetPostAsync(tags, ImageRating.SAFE);
                }
            }
            else
            {
                string tags = e.Arguments.Pack.TakeAll();
                s = await ImageboardProviderPool.GetProvider <SafebooruPost>().GetPostAsync(tags, ImageRating.SAFE);
            }

            if (s == null)
            {
                await e.ErrorEmbed("We couldn't find an image with these tags!")
                .ToEmbed().QueueToChannelAsync(e.Channel);

                return;
            }

            e.Channel.QueueMessage(s.Url);
        }
Exemple #12
0
 public NsfwModule(Config config)
 {
     ImageboardProviderPool.AddProvider <E621Post>(new ImageboardProvider(
                                                       new ImageboardConfigurations
     {
         QueryKey          = new Uri("http://e621.net/post/index.json?tags="),
         ExplicitTag       = "rating:e",
         QuestionableTag   = "rating:q",
         SafeTag           = "rating:s",
         NetUseCredentials = true,
         NetHeaders        = new List <Tuple <string, string> >()
         {
             new Tuple <string, string>("User-Agent", "MikiBot"),
         },
         BlacklistedTags =
         {
             "loli",
             "shota",
             "gore"
         },
         mapper = content => MikiRandom.Of(
             JsonConvert.DeserializeObject <List <E621Post> >(content))
     }));
     ImageboardProviderPool.AddProvider <DanbooruPost>(new ImageboardProvider(
                                                           new ImageboardConfigurations
     {
         QueryKey          = new Uri("https://danbooru.donmai.us/posts.json?tags="),
         ExplicitTag       = "rating:e",
         QuestionableTag   = "rating:q",
         SafeTag           = "rating:s",
         NetUseCredentials = true,
         NetHeaders        =
         {
             new Tuple <string, string>(
                 "Authorization",
                 $"Basic {Convert.ToBase64String(Encoding.UTF8.GetBytes(config.OptionalValues?.DanbooruApiKey ?? ""))}"),
         },
         BlacklistedTags =
         {
             "loli",
             "shota",
             "gore"
         },
         mapper = content => MikiRandom.Of(
             JsonConvert.DeserializeObject <List <DanbooruPost> >(content))
     }));
     ImageboardProviderPool.AddProvider <GelbooruPost>(new ImageboardProvider(
                                                           new ImageboardConfigurations
     {
         QueryKey = new Uri(
             "http://gelbooru.com/index.php?page=dapi&s=post&q=index&json=1&tags="),
         BlacklistedTags =
         {
             "loli",
             "shota",
             "gore"
         },
         mapper = content => MikiRandom.Of(
             JsonConvert.DeserializeObject <List <GelbooruPost> >(content))
     }));
     ImageboardProviderPool.AddProvider <SafebooruPost>(new ImageboardProvider(
                                                            new ImageboardConfigurations
     {
         QueryKey = new Uri(
             "https://safebooru.org/index.php?page=dapi&s=post&q=index&json=1&tags="),
         BlacklistedTags =
         {
             "loli",
             "shota",
             "gore"
         },
         mapper = content => MikiRandom.Of(
             JsonConvert.DeserializeObject <List <SafebooruPost> >(content))
     }));
     ImageboardProviderPool.AddProvider <Rule34Post>(new ImageboardProvider(
                                                         new ImageboardConfigurations
     {
         QueryKey = new Uri(
             "http://rule34.xxx/index.php?page=dapi&s=post&q=index&json=1&tags="),
         BlacklistedTags =
         {
             "loli",
             "shota",
             "gore"
         },
         mapper = content => MikiRandom.Of(
             JsonConvert.DeserializeObject <List <Rule34Post> >(content))
     }));
     ImageboardProviderPool.AddProvider <KonachanPost>(new ImageboardProvider(
                                                           new ImageboardConfigurations
     {
         QueryKey        = new Uri("https://konachan.com/post.json?tags="),
         BlacklistedTags =
         {
             "loli",
             "shota",
         },
         mapper = content => MikiRandom.Of(
             JsonConvert.DeserializeObject <List <KonachanPost> >(content))
     }));
     ImageboardProviderPool.AddProvider <YanderePost>(new ImageboardProvider(
                                                          new ImageboardConfigurations
     {
         QueryKey        = new Uri("https://yande.re/post.json?api_version=2&tags="),
         BlacklistedTags =
         {
             "loli",
             "shota",
         },
         mapper = content => MikiRandom.Of(
             JsonConvert.DeserializeObject <YandereResponse>(content).Posts)
     }));
 }