public async Task <bool> Init(string[] args) { var opts = new OptionSet() { { "d|dir=", "Set server storage dir (default: ./)", b => ServerDir = b }, { "s|secret=", "Set client secret (osu!) (required)", s => OsuSecret = s }, { "k|key=", "osu! api v1 key (required)", k => OsuApiKey = k }, { "id=", "osu! client id (default: mine)", id => OsuId = id }, { "t|token=", "discord bot token (required)", t => DiscordToken = t }, { "h|help", "displays help", a => Help = a != null }, { "l|link", "displays bot link and exits", l => Link = l != null }, { "apiRequest=", "does api request", a => Apiv2Req = a }, { "test", "test server only", t => Test = t != null }, { "w|webhook=", "webhook for output", w => WebHook = w }, { "reload", "reload databases", r => Reload = r != null }, }; opts.Parse(args); string botLink = $"https://discordapp.com/oauth2/authorize?client_id={DiscordId}&scope=bot&permissions={DiscordPermissions}"; if (Link) { Console.WriteLine(botLink); return(false); } if (Help || (OsuSecret.Length * OsuApiKey.Length * DiscordToken.Length) == 0) { Console.WriteLine( $@"osu! Miss Analyzer, Discord Bot Edition Bot link: https://discordapp.com/oauth2/authorize?client_id={DiscordId}&scope=bot&permissions={DiscordPermissions}"); opts.WriteOptionDescriptions(Console.Out); return(false); } if (Apiv2Req != null) { OsuApi api2 = new OsuApi(ServerContext.webClient, OsuId, OsuSecret, OsuApiKey); Console.WriteLine(await api2.GetApiv2(Apiv2Req)); return(false); } try { using (var stream = Assembly.GetEntryAssembly().GetManifestResourceStream("OsuMissAnalyzer.Server.Resources.GitCommit.txt")) using (var streamReader = new StreamReader(stream, Encoding.UTF8)) { GitCommit = streamReader.ReadToEnd(); } } catch (Exception) { return(false); } return(true); }