Example #1
0
        public async Task MainAsync(string[] args)
        {
            if (false)
            {
                Testing();
                return;
            }
            string executablePath = System.Reflection.Assembly.GetExecutingAssembly().Location;
            string executableDir  = Path.GetDirectoryName(executablePath);

            BotSettings.Init(Path.Combine(executableDir, "BotSettings.json"), Path.Combine(executableDir, "BotSettingsBase.json"));
            var settings = BotSettings.Instance;

            if (args != null && args.Length == 1 && !String.IsNullOrWhiteSpace(args[0]))
            {
                settings.Token = args[0];
            }
            else if (settings.Token == null || settings.Token == string.Empty)
            {
                while (true)
                {
                    Console.WriteLine("Please enter your bot's token:");
                    settings.Token = Console.ReadLine();
                    if (settings.Token != string.Empty)
                    {
                        break;
                    }
                }
            }
            settings.Save();

            var socketConfig = new DiscordSocketConfig();

            socketConfig.MessageCacheSize = 100;
            _client = new DiscordSocketClient(socketConfig);
            //_client.MessageReceived += LogMessage;
            _client.Log            += Log;
            _client.MessageUpdated += Logic.MessageHistory.Instance.AddAsync;
            _client.MessageDeleted += Logic.MessageHistory.Instance.AddDeletedAsync;

            _commands = new CommandService();

            _handler = new CommandHandler(_client, _commands);

            await _handler.InstallCommandsAsync();

            await _client.LoginAsync(TokenType.Bot, settings.Token);

            await _client.StartAsync();

            await Task.Delay(-1);
        }