Пример #1
0
        private static void Run()
        {
            while (!HasInternet())
            {
            }

            var config = JsonConvert.DeserializeObject <Configuration>(File.ReadAllText("conf.json"));

            _discord           = new Discord();
            _discord.OnClosed += DiscordClosed;
            var result = _discord.Connect(config);

            result.Wait();

            //Instantiate this so that the static 'Instance' field is set.
            var roundService = new RoundService(_discord);
            var subService   = new SubService();

            subService.Init(_discord);

            _discord.AddCommand(new UptimeCommand());
            _discord.AddCommand(new BreakLengthCommand());
            _discord.AddCommand(new HelpCommand());
            _discord.AddCommand(new RoundLengthCommand());
            _discord.AddCommand(new StartCommand());
            _discord.AddCommand(new StopCommand());
            _discord.AddCommand(new TimeoutCommand());

            Repl();
        }
Пример #2
0
        private static void Evaluate(string[] input)
        {
            if (input[0] == "exit")
            {
                _exiting = true;
            }
            else if (input[0] == "saveconf")
            {
                File.WriteAllText("conf.json", JsonConvert.SerializeObject(_discord.DiscordConfig));
            }
            else if (input[0] == "loadconf")
            {
                if (RoundService.Instance != null && RoundService.Instance.IsRunning)
                {
                    _discord.SendMessage("Ending rounds to reload bot configuration...");
                    RoundService.Instance.StopRounds();
                }
                SubService.Instance.Close();
                var configContents = File.ReadAllText("conf.json");
                var config         = JsonConvert.DeserializeObject <Configuration>(configContents);
                _discord.SetConfig(config);
                SubService.Instance.Init(_discord);
            }
            else if (input[0] == "close")
            {
                _discord.SendMessage("Host is forcing closure of the bot.");
                if (RoundService.Instance != null && RoundService.Instance.IsRunning)
                {
                    RoundService.Instance.StopRounds();
                }
                SubService.Instance.Close();
                _discord.Close();
                var configContents = File.ReadAllText("conf.json");
                var config         = JsonConvert.DeserializeObject <Configuration>(configContents);
                _discord.SetConfig(config);
                SubService.Instance.Init(_discord);
            }
            else if (input[0] == "open")
            {
                var discordConfigContents = File.ReadAllText("conf.json");
                var discordConfig         = JsonConvert.DeserializeObject <Configuration>(discordConfigContents);

                _discord = new Discord();
                _discord.SetConfig(discordConfig);
                _discord.Connect(discordConfig);

                var rounds = new RoundService(_discord);
                var sub    = new SubService();
                SubService.Instance.Init(_discord);
            }
            else if (input[0] == "cmd")
            {
                EvaluateDiscordCommand(input);
            }
            else if (input[0] == "msg")
            {
                _discord.SendMessage(input[1]);
            }
            else if (input[0] == "channel")
            {
                Console.WriteLine(string.Format("[{0}] {1}", _discord.Channel.Id, _discord.Channel.Name));
            }
            else if (input[0] == "uptime")
            {
                var difference = TimeSpan.FromTicks(DateTime.UtcNow.Ticks - _discord.StartTime.Ticks);
                Console.WriteLine($"{_discord.StartTime} (UTC); {difference.TotalDays:0.00} days.");
            }
#if DEBUG
            else if (input[0] == "throw")
            {
                throw new Exception("Controlled exception");
            }
#endif
        }