Esempio n. 1
0
        public static async Task <YanStruct> GetYanImageAsync(string search)
        {
            try
            {
                var results = await Yandere.SearchPostsAsync(search, 10000);

                return(results[r.Next(results.Count)]);
            }
            catch
            {
                return(null);
            }
        }
Esempio n. 2
0
        public async Task BooruAsync
        (
            [Remainder][Summary("Search query")] string query
        )
        {
            if (query == null)
            {
                throw new ArgumentNullException(nameof(query), "No input passed");
            }

            string[] sinfulTags =
            {
                "nude",
                "nipples",
                "ass",
                "uncensored",
                "cleavage"
            };

            if (sinfulTags.Any(query.Contains))
            {
                await RankaReplyAsync("...").ConfigureAwait(false);

                return;
            }

            var booru  = new Yandere();
            var result = await booru.GetRandomImageAsync(query).ConfigureAwait(false);

            if (result.tags.Where(x => sinfulTags.Any(y => x.Contains(y))).Any())
            {
                await RankaReplyAsync("..... /_ \\ It was a bit lewd, try again..").ConfigureAwait(false);

                return;
            }

            var color = await StringUtils.DiscordParseColor(new Uri(result.previewUrl.AbsoluteUri)).ConfigureAwait(false);;

            EmbedBuilder eb = new EmbedBuilder
            {
                Title       = "Booru",
                Description = $"Source: Yande.re\nTags:\n{string.Join(", ", result.tags)}",
                ImageUrl    = result.previewUrl.AbsoluteUri,
                Url         = result.postUrl.AbsoluteUri,
                Color       = color,
            };

            eb.WithFooter(footer => { footer.Text = "Booru for Ranka"; });
            await RankaReplyAsync(eb).ConfigureAwait(false);
        }
Esempio n. 3
0
        static BooruHelper()
        {
            HttpClient = new HttpClient(new SocketsHttpHandler
            {
                AutomaticDecompression = DecompressionMethods.All,
            });

            Danbooru       = new Danbooru(HttpClient);
            Gelbooru       = new Gelbooru(HttpClient);
            Konachan       = new Konachan(HttpClient);
            SankakuComplex = new SankakuComplex(HttpClient);
            Yandere        = new Yandere(HttpClient);

            TaskCancellationDelay = TimeSpan.FromMilliseconds(50);
        }
Esempio n. 4
0
        public async Task Weeb(string args = "")
        {
            Naughty += 1;
            var booru = new Yandere();

            BooruSharp.Search.Post.SearchResult result;
            if (args == "")
            {
                result = await booru.GetRandomImageAsync(args);
            }
            else
            {
                result = await booru.GetRandomImageAsync();
            }

            await ReplyAsync("Image: " + result.fileUrl.AbsoluteUri);
        }
Esempio n. 5
0
    //This function adds the player characters to the roster in battle
    public void AddPlayerToRoster()
    {
        //populating the player characters into the roster first
        foreach (GameObject g in playerObjects)
        {
            if (g.name.ToUpper().Contains("DANDERE"))
            {
                Dandere dandere = g.GetComponent <Dandere>();
                dandere.ReturnStats.gs_BID = battleID;
                roster.Add(dandere.ReturnStats);
            }

            else if (g.name.ToUpper().Contains("KUUDERE"))
            {
                Kuudere kuudere = g.GetComponent <Kuudere>();
                kuudere.ReturnStats.gs_BID = battleID;
                roster.Add(kuudere.ReturnStats);
            }

            else if (g.name.ToUpper().Contains("TSUNDERE"))
            {
                Tsundere tsundere = g.GetComponent <Tsundere>();
                tsundere.ReturnStats.gs_BID = battleID;
                roster.Add(tsundere.ReturnStats);
            }

            else if (g.name.ToUpper().Contains("YANDERE"))
            {
                Yandere yandere = g.GetComponent <Yandere>();
                yandere.ReturnStats.gs_BID = battleID;
                roster.Add(yandere.ReturnStats);
            }

            battleID++;  //incremement battle ID afterwards
        }
    }
Esempio n. 6
0
 // ReSharper disable once SuggestBaseTypeForParameter
 public YandereModule(Yandere booru, BooruRepository repository, SubscriptionService service) : base(repository)
 {
     this._service = service;
     this.Booru    = booru;
 }
Esempio n. 7
0
        public static void Setup()
        {
            StartedTime = new TimeSpan(DateTime.Now.Ticks);
            Random      = new TRandom(new NR3Generator(TMath.Seed()));
            Logger      = new BaseLogger();
            Logger.Log(ConsoleColor.Cyan, LogType.NoDisplay, "Info", "Welcome to Chino-chan!");

            CheckExternalLibs();

            LoadSettings();

            Gelbooru = new Gelbooru();
            Danbooru = new Danbooru();
            Yandere  = new Yandere();

            if (!Settings.Credentials.IsEmpty(CredentialType.Sankaku))
            {
                Sankaku = new Sankaku(Settings.Credentials.Sankaku.Username, Settings.Credentials.Sankaku.Password);
            }

            if (!Settings.Credentials.IsEmpty(CredentialType.Imgur))
            {
                Imgur = new Image.Imgur();
            }

            if (!string.IsNullOrWhiteSpace(Settings.Credentials.Google.ClientSecret) &&
                !string.IsNullOrWhiteSpace(Settings.Credentials.Google.ClientId))
            {
                Logger.Log(ConsoleColor.Green, LogType.GoogleDrive, null, "Logging into GoogleDrive...");
                var Credential = GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets()
                {
                    ClientId     = Settings.Credentials.Google.ClientId,
                    ClientSecret = Settings.Credentials.Google.ClientSecret
                }, new string[] { DriveService.Scope.Drive }, "user", CancellationToken.None).Result;

                GoogleDrive = new DriveService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = Credential,
                    ApplicationName       = "Chino-chan"
                });
                Logger.Log(ConsoleColor.Green, LogType.GoogleDrive, null, "Logged in!");
            }

            if (!string.IsNullOrWhiteSpace(Settings.Credentials.Google.Token))
            {
                Logger.Log(ConsoleColor.Red, LogType.YouTubeAPI, null, "Creating YouTube service...");

                YouTube = new YouTubeService(new BaseClientService.Initializer()
                {
                    ApiKey          = Settings.Credentials.Google.Token,
                    ApplicationName = "Chino-chan"
                });

                Logger.Log(ConsoleColor.Red, LogType.YouTubeAPI, null, "Done!");
            }

            LanguageHandler = new LanguageHandler();
            GuildSettings   = new GuildSettings();

            Updater = new Updater();

            Client = new DiscordSocketClient(new DiscordSocketConfig()
            {
                AlwaysDownloadUsers = true,
                DefaultRetryMode    = RetryMode.AlwaysRetry,
                LargeThreshold      = 250,
                LogLevel            = LogSeverity.Verbose
            });

            Client.Log += (Log) =>
            {
                Logger.Log(ConsoleColor.White, LogType.Discord, Log.Severity.ToString(), Log.Message);
                return(Task.CompletedTask);
            };
            Client.Ready += () =>
            {
                if (Sankaku != null)
                {
                    Logger.Log(ConsoleColor.DarkYellow, LogType.Sankaku, "Login", "Logging in...");

                    var LoggedIn = Sankaku.Login(out bool TooManyRequests);
                    if (LoggedIn)
                    {
                        Logger.Log(ConsoleColor.DarkYellow, LogType.Sankaku, "Login", "Logged in!");
                    }
                    else
                    {
                        Logger.Log(ConsoleColor.Red, LogType.Sankaku, "Login", "Couldn't log in due to " + (TooManyRequests ? "rate limitation!" : "wrong credentials!"));
                    }
                }

                return(Task.CompletedTask);
            };

            if (osuAPIEnabled)
            {
                osuAPI = new osuApi();
            }

            CommandService = new CommandService(new CommandServiceConfig()
            {
                CaseSensitiveCommands = false,
                LogLevel       = LogSeverity.Verbose,
                DefaultRunMode = RunMode.Async
            });
            Logger.Log(ConsoleColor.Cyan, LogType.Commands, null, "Loading Commands...");

            Services = new ServiceCollection().BuildServiceProvider();

            CommandService.AddModulesAsync(Assembly.GetEntryAssembly(), Services).ContinueWith((ModuleInfo) =>
            {
                Logger.Log(ConsoleColor.Cyan, LogType.Commands, null, "Loaded Commands!");
                var Modules      = ModuleInfo.Result;
                var Text         = "";
                var HelpNotFound = new List <string>();

                var English = LanguageHandler.GetLanguage("en");

                foreach (var Module in Modules)
                {
                    Text += Environment.NewLine + "- " + Module.Name + Environment.NewLine;
                    foreach (var Command in Module.Commands)
                    {
                        Text += "-- " + Command.Name + Environment.NewLine;
                        if (!English.Help.ContainsKey(Command.Name))
                        {
                            HelpNotFound.Add(Command.Name);
                        }
                    }
                }
                Logger.Log(ConsoleColor.Cyan, LogType.Commands, null, "Available modules and commands: " + Text);
                if (HelpNotFound.Count != 0)
                {
                    Logger.Log(ConsoleColor.Cyan, LogType.Commands, "Warning", "Help not found for these commands: " + string.Join(", ", HelpNotFound));
                }
            });

            Client.MessageReceived += async(ReceivedMessage) =>
            {
                var Message = ReceivedMessage as SocketUserMessage;
                if (Message == null)
                {
                    return;
                }

                var Context = new CommandContext(Client, Message);

                var Settings = GuildSettings.GetSettings(Context.Guild != null ? Context.Guild.Id : Context.User.Id);

                if (Global.Settings.SayPreferences.ContainsKey(Context.User.Id) && !Message.Content.StartsWith(Settings.Prefix + "say"))
                {
                    var Prefs = Global.Settings.SayPreferences[Context.User.Id];
                    if (Prefs.Listening.ContainsKey(Context.Channel.Id))
                    {
                        if (Client.GetChannel(Prefs.Listening[Context.Channel.Id]) is ITextChannel Channel)
                        {
                            await Channel.SendMessageAsync(Message.Content);

                            if (Prefs.AutoDel)
                            {
                                var Dm = await Context.User.GetOrCreateDMChannelAsync();

                                if (Dm.Id != Context.Channel.Id)
                                {
                                    await Message.DeleteAsync();
                                }
                            }
                        }
                        else
                        {
                            Global.Settings.SayPreferences[Context.User.Id].Listening.Remove(Context.Channel.Id);
                            SaveSettings();
                        }
                    }
                }


                if (Message.Content == "/gamerescape")
                {
                    var Name = Message.Author.Username;
                    if (!Context.IsPrivate)
                    {
                        await Message.DeleteAsync();

                        Name = (await Context.Guild.GetUserAsync(Message.Author.Id)).Nickname ?? Name;
                    }
                    await Message.Channel.SendMessageAsync($"{ Name } ¯\\_(ツ)_/¯");

                    return;
                }
                else if (Message.Content == "/lenny")
                {
                    var Name = Message.Author.Username;
                    if (!Context.IsPrivate)
                    {
                        await Message.DeleteAsync();

                        Name = (await Context.Guild.GetUserAsync(Message.Author.Id)).Nickname ?? Name;
                    }
                    await Message.Channel.SendMessageAsync($"{ Name } ( ͡° ͜ʖ ͡°)");

                    return;
                }

                int Position = 0;

                if (!(Message.HasStringPrefix(Settings.Prefix, ref Position) ||
                      Message.HasMentionPrefix(Client.CurrentUser, ref Position)))
                {
                    return;
                }

                var MessageCommand = Message.Content.Substring(Position).ToLower();

                if (Images.Images.ContainsKey(MessageCommand))
                {
                    new Task(async() =>
                    {
                        var Pair = Images.Images[MessageCommand];
                        if (Pair.IsNsfw && !(Context.IsPrivate || IsNsfwChannel(Settings, Message.Channel.Id)))
                        {
                            await Message.Channel.SendMessageAsync(LanguageHandler.GetLanguage(Settings.LanguageId).OnlyNsfw);
                            return;
                        }
                        bool Success = false;
                        var File     = "";
                        do
                        {
                            if (!string.IsNullOrWhiteSpace(File))
                            {
                                Images.Images[MessageCommand].Files.Remove(File);

                                if (Images.Images[MessageCommand].Files.Count == 0)
                                {
                                    await Message.Channel.SendMessageAsync(LanguageHandler.GetLanguage(Settings.LanguageId).CantUploadImage);
                                    break;
                                }
                            }
                            File    = Pair.RandomFile();
                            Success = await SendImageAsync(File, Context.Channel, Pair.TitleIncludeName ? Pair.Name : null);
                        }while (!Success);
                    }).Start();
                    return;
                }

                var Result = await CommandService.ExecuteAsync(Context, Position, Services);

                if (!Result.IsSuccess)
                {
                    switch (Result.Error)
                    {
                    case CommandError.BadArgCount:
                        break;

                    case CommandError.ParseFailed:
                        break;

                    case CommandError.UnmetPrecondition:
                        if (Result.ErrorReason == "Owner")
                        {
                            await Context.Channel.SendMessageAsync(Context.GetLanguage().NoOwnerPermission);
                        }
                        else if (Result.ErrorReason == "ServerSide")
                        {
                            await Context.Channel.SendMessageAsync(Context.GetLanguage().OnlyServer);
                        }
                        else
                        {
                            await Context.Channel.SendMessageAsync(Context.GetLanguage().NoPermission);
                        }
                        break;

                    case CommandError.UnknownCommand:
                        if (IsOwner(Context.User.Id))
                        {
                            var Command = Tools.ConvertHighlightsBack(Message.Content.Substring(Position));

                            new Thread(() => Entrance.HandleCommand(Command, Context.Channel as ITextChannel)).Start();
                        }
                        break;

                    default:
                        await Context.Channel.SendMessageAsync($"```css\nAn error happened! Please report this to { Global.Settings.OwnerName }!\n\nError type: { Result.Error }\nReason: { Result.ErrorReason }```");

                        break;
                    }
                }
                else
                {
                    Logger.Log(ConsoleColor.DarkYellow, LogType.Commands, Context.Guild != null ? Context.Guild.Name : Context.Channel.Name, $"#{ Context.Channel.Name } { Context.User.Username } executed { Context.Message.Content }");
                }
            };

            MusicClients = new Dictionary <ulong, Modules.Music>();

            SysInfo = new SysInfo();
            SysInfo.Load();

            GC.Collect();
            GC.WaitForPendingFinalizers();
        }