private async Task HandleCommandAsync(SocketMessage s) { if (Program.CurrentState == Program.State.Booting || Program.CurrentState == Program.State.Exiting || s.Author.IsBot) { return; } GuildSettings guildSet = GuildSettings.Load(s); if (!(s is SocketUserMessage msg) || (guildSet != null && guildSet.Ignore)) { return; } CustomCommandContext context = new CustomCommandContext(_client, msg) { guildSettings = guildSet }; string prefix = guildSet == null ? "" : guildSet.prefix == null || guildSet.prefix.Length < 1 ? defaultPrefix : guildSet.prefix; if (MessageIsApproved(msg, prefix, out int argPosition) && await GameMaster.VerifyChannel(context, guildSet)) { switch (Program.CurrentState) { case Program.State.Paused: if (s.Author.Id != 201875246091993088) { DUtils.DeleteMessage(await context.Channel.SendMessageAsync( "Server under maintenance, please refer to the support server for more information.")); return; } break; case Program.State.Ready: break; case Program.State.Updating: DUtils.DeleteMessage(await context.Channel.SendMessageAsync("Leaving for tea break soon. [Incoming Update]")); break; } if (!RunUser(s.Author.Id)) { return; } _ = context.BotUser; _ = Task.Run(async() => { try { await _command.ExecuteAsync(context, argPosition, null); } catch (Exception e) { Log.LogS(e); } }); } }