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); }
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); }
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); } } }