예제 #1
0
        public async Task StartAsync()
        {
            PrettyConsole.NewLine($"===   Doggo {ConfigurationBase.Version}   ===");
            PrettyConsole.NewLine();

            Configuration.EnsureExists();

            _client = new DiscordSocketClient(new DiscordSocketConfig()
            {
                LogLevel         = LogSeverity.Info,
                MessageCacheSize = 1000
            });

            _client.Log += OnLogAsync;

            //await _client.LoginAsync(TokenType.Bot, Configuration.Load().Token.Discord);
            //await _client.StartAsync();

            _manager = new ModuleManager(_client);
            await _manager.LoadModulesAsync();

            await Task.Delay(-1);
        }
예제 #2
0
        public async Task StartAsync()
        {
            AppHelper.CreateDirectory("Config");
            AppHelper.CreateDirectory("Chessboards");
            AppHelper.CreateDirectory("BlackJack");
            PrettyConsole.NewLine($"ArcadesBot v{AppHelper.Version}");
            PrettyConsole.NewLine();

            var services = await _startup.ConfigureServices();

            await services.GetService <SchedulerService>().Initialize();

            var manager = services.GetService <CommandManager>();
            await manager.StartAsync();

            var databaseHandler = services.GetRequiredService <DatabaseHandler>();
            var discord         = services.GetService <DiscordSocketClient>();
            await discord.LoginAsync(TokenType.Bot, databaseHandler.Config.ApiKeys["Discord"]);

            await discord.StartAsync();


            await Task.Delay(-1);
        }
예제 #3
0
        private async Task HandleCommandAsync(SocketMessage s)
        {
            var msg = s as SocketUserMessage;

            if (msg == null)
            {
                return;
            }

            PrettyConsole.NewLine(msg.Content);



            var Context = new SocketCommandContext(_client, msg);

            PrettyConsole.NewLine((await GuildRepository.FetchGuildAsync(Context.Guild.Id)).Prefix);

            if (Context.User.IsBot)
            {
                return;
            }

            if (!(Context.Channel is SocketTextChannel))
            {
                return;
            }

            if (!(Context.Guild.CurrentUser as IGuildUser).GetPermissions(Context.Channel as SocketTextChannel).SendMessages)
            {
                return;
            }

            int    argPos = 0;
            string prefix = (await GuildRepository.FetchGuildAsync(Context.Guild.Id)).Prefix;

            if (msg.HasStringPrefix(prefix, ref argPos) ||
                msg.HasMentionPrefix(_client.CurrentUser, ref argPos))
            {
                PrettyConsole.Log(LogSeverity.Debug, $"Guild: {Context.Guild.Name}, User: {Context.User}", msg.Content);
                var result = await _service.ExecuteAsync(Context, argPos, _map);

                if (!result.IsSuccess && result.Error != CommandError.UnknownCommand)
                {
                    var cmd = _service.Search(Context, argPos).Commands.First().Command;
                    if (result.ErrorReason.Length == 0)
                    {
                        return;
                    }
                    switch (result.Error)
                    {
                    case CommandError.BadArgCount:
                        await msg.Channel.SendMessageAsync($"{Context.User.Mention}, You are incorrectly using this command. Usage: `{prefix}{cmd.Remarks}`");

                        break;

                    case CommandError.ParseFailed:
                        await msg.Channel.SendMessageAsync($"{Context.User.Mention}, Invalid number.");

                        break;

                    default:
                        await msg.Channel.SendMessageAsync($"{Context.User.Mention}, {result.ErrorReason}");

                        break;
                    }
                }
            }
            else if (msg.ToString().Length >= Config.MIN_CHAR_LENGTH && !msg.ToString().StartsWith(":"))
            {
                var user = await UserRepository.FetchUserAsync(Context);

                var rate = Config.TEMP_MULTIPLIER_RATE;
                if (DateTimeOffset.Now.Subtract(user.Message).TotalMilliseconds > user.MessageCooldown.TotalMilliseconds)
                {
                    await UserRepository.ModifyAsync(x => {
                        x.Cash += user.TemporaryMultiplier *user.InvestmentMultiplier;
                        x.TemporaryMultiplier = user.TemporaryMultiplier + rate;
                        x.Message             = DateTimeOffset.Now;
                        return(Task.CompletedTask);
                    }, Context);

                    await RankHandler.Handle(Context.Guild, Context.User.Id);
                }
            }
        }