public static async Task DoReadActionOnCurrentTournamentForMemberAsync( this TournamentsManager manager, IUser user, Func <IReadOnlyTournamentState, Task> action) { Result <Task> result = manager.TryReadActionOnCurrentTournament(action); if (result.Success) { await result.Value; return; } IDMChannel channel = await user.GetOrCreateDMChannelAsync(); await channel.SendMessageAsync(BotStrings.UnableToPerformCommand(result.ErrorMessage)); }